一.關鍵字注意點
在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END這兩個之間的代碼默認是nonnull
關鍵字不能用於基本數據類型(int,float),nil只用於對象
二.怎麼去研究新特性?
使用新的xcode創建項目,用舊的xcode去打開
2017 Xcode9 iOS11
2016 Xcode8 iOS10
2015 Xcode7 iOS9
2014 Xcode6 iOS8
2013 Xcode5 iOS7
2012 Xcode4 iOS6
三.出了哪些新特性 :可以用於屬性,方法返回值和方法參數中
關鍵字作用:提示作用,告訴開發者能不能空
關鍵字目的:迎合swift,swift是個強語言,swift必須要指定一個對象是否爲空
關鍵字好處:提高代碼規劃,減少溝通成本
關鍵字僅僅是提供警告,並不會報編譯錯誤
1.nullable
nullable使用範圍:可以用於屬性,方法返回值和方法參數中
nullable作用:可能爲空
nullable 語法1
@property (nonatomic, strong, nullable) NSString *name;
nullable 語法2 * 關鍵字 變量名
@property (nonatomic, strong) NSString * _Nullable name;
2.nonnull
nonnull使用範圍:可以用於屬性,方法返回值和方法參數中
nonnull作用:不能爲空
nonnull 語法1
@property (nonatomic, strong, nullable) NSString *name;
nonnull 語法2 * 關鍵字 變量名
@property (nonatomic, strong) NSString * _Nonnull name;
3.null_resettable
null_resettable使用範圍:可以用於屬性,方法返回值和方法參數中
null_resettable作用:set可以傳入爲空,get方法不能返回nil,必須要處理爲空情況,重寫get方法
null_resettable 語法
@property (nonatomic, strong, null_resettable) NSString *name;
4._Null_unspecified:不確定是否爲空