如果你在一個UIViewController中重寫了這兩個類方法,那麼你會在在這個控制器中發現一下現象:
1,相同之處:
(1)這兩個類方法在init之前就調用了
(2)在整個應用app中無論你用到這個類多少次,這兩個類方法均隻會被調用一次
2,不同之處:
(1)load是在initialize之前被調用
(2)更特别的是,如果你沒有用到你重寫的這個控制器.那你重寫的load類方法也會調用.換句話說,這個load方法是在didFinishLaunchingWithOptions方法之前就被調用了
(3)load方法,将整個工程中所有參與編譯運作的檔案,全部加載到記憶體.
(4)initialize方法,當第一次使用某個類,就會調用;而且隻會調用一次.
3:用法:initialize類方法
initialize類方法的一個經典應用:
往往在一個應用APP中,導覽列控制器的導覽列幾乎是統一的.再加上,一般情況一個應用APP會重寫一個導航控制器類.那麼initialize類方法就能出場了.比如:
-
(void)initialize {
NSLog(@”%s:%s”,FILE,func);
//設定導航欄主題
UINavigationBar *navBar = [UINavigationBar appearance];
//接下來就可以對navBar坐各種統一的設定處理了.比如字型,背景….
}
4: load類方法:
調用時期的一種猜想:
在編譯的時候,整個工程項目中的所有檔案都會參與編譯;編譯運作完成之後,所有的檔案均load進入記憶體;load類方法在工程運作成功進入首頁時候調用完畢.