分類和擴(kuò)展有什么區(qū)別?可以分別用來做什么?分類有哪些局限性?分類的結(jié)構(gòu)體里面有哪些成員?

參考:http://www.cocoachina.com/ios/20161018/17784.html

但文章說的有一些不對(duì)的地方:

1、定義兩個(gè)分類方法相同時(shí),調(diào)用該方法不會(huì)依次執(zhí)行所有類的方法,只會(huì)執(zhí)行Targets,Build Phases,Complie Source下最下面的類(本類不包含,本類是不會(huì)被執(zhí)行的)。

2、個(gè)人覺得分類和擴(kuò)展的不同在于

????1、分類只可以擴(kuò)展方法(但可以通過動(dòng)態(tài)去添加,實(shí)現(xiàn)get/set方法),擴(kuò)展可以擴(kuò)展方法和屬性。

? ? 2、擴(kuò)展在.h文件中聲明的是公開方法,需要去實(shí)現(xiàn)(雖然不實(shí)現(xiàn)也沒問題,但你聲明出來干啥?萬一別人調(diào)用了呢??埋坑等人踩???),在.m? ?文件中聲明是私有的。

? ? 3、分類可以在不修改原來類的基礎(chǔ)上,為一個(gè)類擴(kuò)展方法。而且最有用的是可以擴(kuò)展系統(tǒng)類,提供了不少便利;

3、回到最開始收集頁面啟動(dòng)時(shí)間的問題,本類是系統(tǒng)的類,這里是UIViewController,我們可以使用分類擴(kuò)展他的方法,也可以重寫他的方法,可以我需要在調(diào)用的地方加頭文件,所有子類都寫頭文件和直接在子類寫方法沒有什么區(qū)別,怎么樣可以使得不寫頭文件,子類就能調(diào)用我們寫的代碼呢?

? ? ? 我們可以進(jìn)行方法交換(這樣可以不必在調(diào)用的地方增加頭文件),從而使得在實(shí)現(xiàn)的時(shí)候調(diào)用重寫的方法。附鏈接

? ? ? 英文:Method Swizzling - NSHipster

最后編輯于
?著作權(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ù)。

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