天天看點

iOS中的initialize與load兩個類方法簡單了解

如果你在一個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類方法在工程運作成功進入首頁時候調用完畢.