ios9新特性

1.新出的關鍵字:non null , nullable,null_resettable,_Null_unspecified

1.1 nullable 即可以為nil

定義屬性:

方式一:

@property (nonatomic, strong, nullable) NSString *name;

方式二:

@property (nonatomic, strong) NSString * _Nullable name;

方式三:

@property (nonatomic, strong) NSString * __nullable name;

1.2 nonnull:表示屬性不能為空,

定義屬性

方式一:

@property (nonatomic, strong, nonnull) NSString *name;

方式二:

@property (nonatomic, strong) NSString * _Nonnull name;

方式三:

@property (nonatomic, strong) NSString * __nonnull name;

在NS_ASSUME_NONNULL_BEGIN與NS_ASSUME_NONNULL_END之間所有的對象屬性,方法參數,方法返回值,默認都是nonnull。

NS_ASSUME_NONNULL_BEGIN

@property (nonatomic, strong) NSString *name;

NS_ASSUME_NONNULL_END

1.3 null_resettable:可以重新設置空,set方法可以為空,get不能為空。

方式一:

@property (nonatomic, strong, null_resettable) NSString *name;

注意:用null_resettable屬性,必須重寫set,或者get方法,處理傳值為nil的情況,可以模仿控制器view的get方法,當view為nil,就自己創建一個.

1.4 _Null_unspecified:不確定是否為空.

方式一:

@property (nonatomic, strong) NSString * _Null_unspecified name;

2.泛型:限制類型

2.1 好處:

* 提高程序員開發規范,減少交流成本。

* 從數組或者字典取值,都是id類型,不能調用點語法,但是使用泛型,就可以了。

2.2 開發中使用場景:

* 限制集合中的類型,注意:只能檢測方法的調用,因為聲明的泛型,只能放在方法中

* 當一個類在聲明的時候,某個對象的屬性不確定,只有創建對象的時候才確定,可以使用泛型

2.3 例如:

聲明泛型,在創建對象的時候,確定泛型,在賦值就有提示了。

2.3.1

泛型中協變,逆變,用于轉換類型

默認帶有泛型的變量,互相賦值有報警告,使用協變,逆變,就能解決.

協變(__covariant): 向上轉型, 子類轉父類

逆變(__contravariant):向下轉型 父類轉子類

2.4 __kindof:相當于,表示某個類或者他的子類。

用途:設計模型中可以使用,當給某個類提供類方法,想讓外界調用能看到創建什么對象,并且不報警告。

例如:

+ (__kindof Person *)person;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容