1. 程式人生 > >OC中__kindof的用法

OC中__kindof的用法

簡介
__kindof是蘋果宣告的一個新特性,它是和Nullability Annotations 以及Generics 一起在xcode7中出現的。本文將對它進行詳細介紹:

使用方法
假如我們聲明瞭如下屬性:

[objc] view plain copy
@property (nonatomic, strong) NSArray *viewCollection;  

看屬性名我們會認為它是元素為UIView的陣列,但這只是猜測,它並不能保證這個陣列的元素就是UIView,除非通過閱讀完整的程式碼來確認。
這種情況下,我們就可以使用泛型和__kindof來解決這個問題。

使用泛型,我們可以這樣宣告這個陣列:

[objc] view plain copy
@property (nonatomic, strong) NSArray<UIView *> *viewCollection;  

這樣我們知道這個陣列被指定了元素為UIView型別。
但是呢,這樣宣告的陣列它只能包含UIView型別的元素,如果元素被賦值為UIWebView或UIButton這樣的子型別,編譯器就會報警告⚠️。

為了解決這個問題,__kindof就應運而生。

[objc] view plain copy
@property (nonatomic, strong) NSArray<__kindof UIView
*> *viewCollection;

用這種結構宣告,這個陣列就可以包含UIView以及UIView的子型別,例如UIWebView或UIButton。

我們開發人員應該儘可能地去使用OC的新特性。像__kindof就可以幫助我們提高程式碼質量和明確程式碼意圖,使用泛型和__kindof會使程式碼更嚴謹,這對我們的程式碼和應用是大有益處滴!!