關(guān)鍵字可用于屬性既峡、方法參數(shù)和返回值參數(shù)中
關(guān)鍵字作用:提示作用魔招,告訴開發(fā)者屬性信息
關(guān)鍵字好處:提高代碼規(guī)劃阵具,減少溝通成本缠俺。
關(guān)鍵字僅僅是提供警告并不會(huì)報(bào)編譯錯(cuò)誤
宏:NS_ASSUME_NONNULL_BEGIN、NS_ASSUME_NONNULL_END
在NS_ASSUME_NONNULL_BEGIN
和NS_ASSUME_NONNULL_END
之間默認(rèn)是nonnull
典尾。
nonnull脚作、_Nonnull放椰、__nonnull
nonnull即字面意思:提示不能為空刑然。
// 語法1
@property (nonnull, nonatomic, copy) NSString *name;
// 語法2
@property (nonatomic, copy) NSString * _Nonnull name;
// 語法3
@property (nonatomic, copy) NSString * __nonnull name;
// 參數(shù)和返回值都不能為空
// 語法1
- (nonnull NSString *)test:(nonnull NSString *)name;
// 語法2
- (NSString * _Nonnull)test:(NSString * _Nonnull)name;
nullable寺擂、_Nullable、__nullable
nullable:提示可以為空泼掠。用法同上怔软。
// 語法1
@property (nullable, nonatomic, copy) NSString *name;
// 語法2
@property (nonatomic, copy) NSString * __nullable name;
// 語法3
@property (nonatomic, copy) NSString * _Nullable name;
null_resettable
null_resettable:必須處理為空的情況,getter不能返回nil
武鲁,setter方法可以傳入空爽雄。必須重寫get方法或者setter方法蝠检,處理傳遞值為空的情況沐鼠。
@property (null_resettable, nonatomic, copy) NSString *name;
null_unspecified、_Null_unspecified叹谁、__null_unspecified
null_unspecified:不確定是否為空饲梭。
// 語法1
@property (null_unspecified, nonatomic, copy) NSString *name;
// 語法2
@property (nonatomic, copy) NSString * _Null_unspecified name;
// 語法3
@property (nonatomic, copy) NSString * __null_unspecified name;
__kindof
__kindof:表示當(dāng)前類或者子類。
// 語法1
@property (nonatomic, strong) NSMutableArray<__kindof NSString *> *names;
// 語法2
- (__kindof UITableViewCell *)cell;