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
不過,爲了安全起見,蘋果還制定了幾條規則:方法