+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)的順序一致
+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è)Category的initialize方法)
更多:iOS面試題 答案合集