Category VS Extension

Category VS Extension 原理詳解

  1. 根據(jù)runtime的消息傳遞機(jī)制中的核心函數(shù)void objc_msgSend(id self,SEL cmd,...)來發(fā)送消息,先從當(dāng)前類中查找調(diào)用的方法,若沒有找到則繼續(xù)從其父類中一層層往上找,那么對(duì)于category重寫同一個(gè)方法,則在消息傳遞的過程中,會(huì)最先找到category中的方法并執(zhí)行該方法。對(duì)于多個(gè)分類調(diào)用同一個(gè)方法,Xcode在運(yùn)行時(shí)是根據(jù)buildPhases->Compile Sources里面的從上至下順序編譯的,編譯時(shí)通過壓棧的方式將多個(gè)分類壓棧,根據(jù)后進(jìn)先出的原則,后編譯的會(huì)被先調(diào)用,當(dāng)objc_msgSend找到方法并調(diào)用之后,就不再繼續(xù)傳遞消息,所以形成所謂上的覆蓋。并不是后面創(chuàng)建的就一定被調(diào)用,得看創(chuàng)建之后其在buildPhases->Compile Sources里面的位置。
  2. 建議不要輕易在分類中覆蓋主類的方法。
  3. iOS - 類擴(kuò)展與分類的區(qū)別
最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,058評(píng)論 0 9
  • Category VS Extension 原理詳解 深入理解Objective-C:Category 一: ca...
    iYeso閱讀 461評(píng)論 0 1
  • 參數(shù)自一個(gè)指針,指向類的要接收消息的實(shí)例。 OP在處理該信息的方法的選擇。 ......可變參數(shù)列表包含參數(shù)的方法...
    reallychao閱讀 897評(píng)論 0 0
  • 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的...
    西木閱讀 30,892評(píng)論 33 466
  • 日常的清晨,瓢潑大雨,淅瀝瀝的雨聲總是帶來略微低落的情緒,還好已經(jīng)是周五。路上不小心失手掉落早餐奶黃包,還好有袋子...
    蘇不尋閱讀 356評(píng)論 0 0

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