??在OC中協(xié)議的可選方法是否實(shí)現(xiàn)的判斷可以通過
self.delegate.responseToSelector(@selector(method))
來(lái)進(jìn)行判斷,如果代理對(duì)象實(shí)現(xiàn)了method,則執(zhí)行method,如果代理對(duì)象沒有實(shí)現(xiàn),則不執(zhí)行,如果不進(jìn)行判斷,在代理對(duì)象沒有實(shí)現(xiàn)method的時(shí)候,程序會(huì)因?yàn)檎也坏椒椒ǘ罎?br>
if(self.delegate.responseToSelector(@selector(method)){[self.delegate method]}
這是oc中對(duì)可選協(xié)議方法的判斷
??在編寫swift協(xié)議中自定義了可選方法之后的判斷則可以利用swift的可空鏈直接由系統(tǒng)進(jìn)行判斷,不用自己寫responseToSelector方法來(lái)進(jìn)行代理對(duì)象是否實(shí)現(xiàn)的判斷:
@objc protocol xxxdelegate { optional func method()};
定義一個(gè)協(xié)議,并給其添加一個(gè)可選的方法
在類中使用的時(shí)候則可以直接通過可空鏈判斷:
delegate?.method?()
?? 對(duì)于可空鏈,第一個(gè)問號(hào)會(huì)判斷delegate是否存在,如果不存在,則直接返回nil,如果存在,則調(diào)用method,method后的問號(hào),會(huì)直接對(duì)該方法進(jìn)行判斷,如果代理對(duì)象實(shí)現(xiàn)了method,則調(diào)用method在代理對(duì)象中的實(shí)現(xiàn),如果代理對(duì)象沒有實(shí)現(xiàn)該可選的method,則返回空,并且不會(huì)造成程序崩潰。
?? 一開始用swift寫協(xié)議的可選方法時(shí),以為對(duì)可選方法的實(shí)現(xiàn)判斷應(yīng)該和oc中一樣,但是在實(shí)際操作中發(fā)現(xiàn)delegate不能調(diào)用responseToSelector方法,之后發(fā)現(xiàn)其直接通過可空鏈進(jìn)行方法是否實(shí)現(xiàn)的判斷,在swift中的optional類型,初學(xué)使用時(shí)會(huì)感覺非常麻煩,很多地方都需要考慮拆包,而且在實(shí)際編程中發(fā)現(xiàn)強(qiáng)制拆包雖然方便,但是會(huì)造成很多未知的不可控問題,很多時(shí)候往往需要用if let語(yǔ)句進(jìn)行拆包,感覺反而使代碼變得很冗余,但是隨著深入的使用,發(fā)現(xiàn)swift的optional類型其實(shí)在很多場(chǎng)景都提供了良好的鏈?zhǔn)骄幊汰h(huán)境,反而使代碼寫起來(lái)更加流暢,且閱讀代碼更加容易。
Swift中協(xié)議的可選方法的實(shí)現(xiàn)判斷
最后編輯于 :
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
- *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
- 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...