在2014找岖,隨著蘋果公司swift語言的推出顶滩,為了能讓Object-C與swift和諧的混合開發(fā),而swift以嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)類型而著稱辨赐,因此优俘,OC不得不為swift而做出改變。接下來掀序,我們簡(jiǎn)單的說幾點(diǎn)iOS 9 Object-C為swift做出的改變。
先看這一張圖
正如圖中展示的惭婿,這一類的關(guān)鍵字有:nullable不恭、nonnulla、null_resettable财饥、_Null_unspecified
解釋:
nullable作用:可能為空(swift中有一個(gè)可選類型换吧,你可以理解為可能為空)。
nullable使用:
nullable 語法1
@property (nonatomic, strong, nullable) NSString *name;
nullable 語法2 * 關(guān)鍵字 變量名
@property (nonatomic, strong) NSString * _Nullable name;
nonnull作用:不能為空
nonnull 語法1
@property (nonatomic, strong, nullable) NSString *name;
nonnull 語法2 * 關(guān)鍵字 變量名
@property (nonatomic, strong) NSString * _Nonnull name;
null_resettable:必須要處理為空情況,也就是重寫get方法钥星,如果為空沾瓦,返回一個(gè)默認(rèn)的值。
null_resettable作用:get方法不能返回nil,set可以傳入為空
null_resettable 語法1
@property (nonatomic, strong, null_resettable) NSString *name;
_Null_unspecified:不確定是否為空,這個(gè)使用的較少贯莺。
// 再看這一張圖风喇,注意結(jié)尾處有對(duì)應(yīng)的NS_ASSUME_NONNULL_END
關(guān)鍵字注意點(diǎn)
在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之間默認(rèn)是nonnull
關(guān)鍵字不能用于基本數(shù)據(jù)類型(int,float),nil只用于對(duì)象