OS之iOS9新特性――__kindof
簡(jiǎn)介
__kindof是蘋(píng)果聲明的一個(gè)新特性,它是和Nullability Annotations以及Generics一起在xcode7中出現(xiàn)的。本文將對(duì)它進(jìn)行詳細(xì)介紹:
使用方法
假如我們聲明了如下屬性:
@property(nonatomic,strong)NSArray*viewCollection;
看屬性名我們會(huì)認(rèn)為它是元素為UIView的數(shù)組,但這只是猜測(cè),它并不能保證這個(gè)數(shù)組的元素就是UIView,除非通過(guò)閱讀完整的代碼來(lái)確認(rèn)。
這種情況下,我們就可以使用泛型和__kindof來(lái)解決這個(gè)問(wèn)題。
使用泛型,我們可以這樣聲明這個(gè)數(shù)組:
@property (nonatomic,strong) NSArray<UIView*> *viewCollection;
這樣我們知道這個(gè)數(shù)組被指定了元素為UIView類型。
但是呢,這樣聲明的數(shù)組它只能包含UIView類型的元素,如果元素被賦值為UIWebView或UIButton這樣的子類型,編譯器就會(huì)報(bào)警告??。
為了解決這個(gè)問(wèn)題,__kindof就應(yīng)運(yùn)而生。
@property (nonatomic,strong) NSArray<__kindof UIView*> *viewCollection;
用這種結(jié)構(gòu)聲明,這個(gè)數(shù)組就可以包含UIView以及UIView的子類型,例如UIWebView或UIButton。
我們開(kāi)發(fā)人員應(yīng)該盡可能地去使用OC的新特性。像__kindof就可以幫助我們提高代碼質(zhì)量和明確代碼意圖,使用泛型和__kindof會(huì)使代碼更嚴(yán)謹(jǐn),這對(duì)我們的代碼和應(yīng)用是大有益處滴!!
原文鏈接:https://happyteamlabs.com/blog/how-to-use-__kindof-in-objective-c/