OC中__kindof的用法

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/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • OS之iOS9新特性――__kindof 簡(jiǎn)介 __kindof是蘋(píng)果聲明的一個(gè)新特性,它是和Nullabilit...
    hypercode閱讀 2,449評(píng)論 1 4
  • 1. 熟悉Git的基本流程 git clone git add -A git commit -m " " git ...
    9bf19a4010ab閱讀 1,783評(píng)論 0 2
  • 本文原文轉(zhuǎn)自http://my.oschina.net/u/2340880/blog/514804 原 Objec...
    Isy閱讀 553評(píng)論 0 0
  • 一、簡(jiǎn)介 <<UITableView(或簡(jiǎn)單地說(shuō),表視圖)的一個(gè)實(shí)例是用于顯示和編輯分層列出的信息的一種手段 <<...
    無(wú)邪8閱讀 10,959評(píng)論 3 3
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,810評(píng)論 16 22

友情鏈接更多精彩內(nèi)容