Nonnull区域设置(Audited Regions)安全
若是须要每一个属性或每一个方法都去指定nonnull和nullable,是一件很是繁琐的事。苹果为了减轻咱们的工做量,专门提供了两个宏:NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END。atom
在指针
#define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")对象
#define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")it
NS_ASSUME_NONNULL_BEGIN @interface TestNullabilityClass () @property (nonatomic, copy) NSArray * items; - (id)itemWithName:(nullable NSString *)name; @end NS_ASSUME_NONNULL_END
在上面的代码中,items属性默认是nonnull的,itemWithName:方法的返回值也是nonnull,而参数是指定为nullable的。io
不过,为了安全起见,苹果还制定了几条规则:方法