iOS面試題:load 和 initialize 的區(qū)別?

+load

  • 1、只要程序啟動(dòng)就會(huì)將所有類的代碼加載到內(nèi)存中(在main函數(shù)執(zhí)行之前), 放到代碼區(qū)(無(wú)論該類有沒有被使用到都會(huì)被調(diào)用)
  • 2、+load方法會(huì)在當(dāng)前類被加載到內(nèi)存的時(shí)候調(diào)用, 有且僅會(huì)調(diào)用一次
  • 3、當(dāng)父類和子類都實(shí)現(xiàn)+load方法時(shí), 會(huì)先調(diào)用父類的+load方法, 再調(diào)用子類的+load方法
  • 4、先加載原始類,再加載分類的+load方法
  • 5、當(dāng)子類未實(shí)現(xiàn)+load方法時(shí),不會(huì)調(diào)用父類的+load方法
  • 6、多個(gè)類都實(shí)現(xiàn)+load方法,+load方法的調(diào)用順序,與Compile Sources中出現(xiàn)的順序一致

load方法在Apple官方文檔中的描述

+initialize

  • 1、當(dāng)類第一次被使用的時(shí)候就會(huì)調(diào)用(創(chuàng)建類對(duì)象的時(shí)候)
  • 2、initialize方法在整個(gè)程序的運(yùn)行過程中只會(huì)被調(diào)用一次, 無(wú)論你使用多少次這個(gè)類都只會(huì)調(diào)用一次
  • 3、initialize用于對(duì)某一個(gè)類進(jìn)行一次性的初始化
  • 4、先調(diào)用父類的initialize再調(diào)用子類的initialize
  • 5、當(dāng)子類未實(shí)現(xiàn)initialize方法時(shí),會(huì)把父類的實(shí)現(xiàn)繼承過來調(diào)用一遍,再次之前父類的initialize方法會(huì)被優(yōu)先調(diào)用一次
  • 6、當(dāng)有多個(gè)Category都實(shí)現(xiàn)了initialize方法,會(huì)覆蓋類中的方法,只執(zhí)行一個(gè)(會(huì)執(zhí)行Compile Sources 列表中最后一個(gè)Categoryinitialize方法)

initialize方法在Apple官方文檔中的描述


更多:iOS面試題 答案合集

?著作權(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ù)。

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

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