OC中__kindof的用法
阿新 • • 發佈:2019-02-18
簡介
__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會使程式碼更嚴謹,這對我們的程式碼和應用是大有益處滴!!