相信在開發(fā)過程中脯爪,很多小伙伴們兒都會見到nullable则北,nonnull矿微,null_resettable,_Null_unspecified
這幾個關(guān)鍵字尚揣,但是并不知道它們是什么意思涌矢,下面我就給大家一一解釋一下。
在解釋這四個關(guān)鍵字之前快骗,先給大家普及一下關(guān)鍵字是干嘛的娜庇。
關(guān)鍵字:可以用于屬性,方法返回值和參數(shù)中。
關(guān)鍵字作用:提示作用,告訴開發(fā)者屬性信息方篮。
關(guān)鍵字好處:提高代碼規(guī)劃,減少溝通成本名秀。
nullable作用:可能為空。
語法如下:
@property (nonatomic, strong, nullable) NSString *name;
或
@property (nonatomic, strong) NSString * _Nullable name;
nonnull作用:不能為空藕溅。
@property (nonatomic, strong, nonnull) NSString *name;
或
@property (nonatomic, strong) NSString * _Nonnull name;
null_resettable這個相應(yīng)復(fù)雜一點匕得,意思是:必須要處理為空情況,重寫get方法,也就是get方法不能返回nil,set可以傳入為空巾表。
@property (nonatomic, strong, null_resettable) NSString *name;
- (NSString *)name
{
if (_name == nil) {
_name = @"";
}
return _name;
}
_Null_unspecified作用:不確定是否為空,這個基本上用不到汁掠。
下面補充個注意點:
1.關(guān)鍵字僅僅是提供警告,并不會報編譯錯誤。當(dāng)屬性關(guān)鍵字為nonnull的時候集币,即使屬性置為nil考阱,也只是報警告而已,不會報錯鞠苟。
2.關(guān)鍵字不能用于基本數(shù)據(jù)類型,只能用于對象乞榨。