initialize和init以及load方法的區別與使用以及什麼時候調用,initializeinit

來源:互聯網
上載者:User

initialize和init以及load方法的區別與使用以及什麼時候調用,initializeinit

initialize不是init
initialize在這個類第一次被調用的時候比如[[class alloc]init]會調用一次initialize方法,不管建立多少次這個類,都只會調用一次這個方法,我們用它來初始化靜態變數,而init方法是只要這個類被調用,就會調用這個init方法,這個類被調用幾次,這個init方法就會被調用幾次,當有一個類繼承這個類,是這個類的子類的時候,當子類被調用的時候比如子類被[[class alloc]init]的時候,父類的initialize和init方法都會被調用一次,
init繼承於NSObject這個根類,所有的子類可以不用重寫這個執行個體方法函數,當然也可以在自己的類裡重寫init執行個體方法。
1 - (id) init
2 {
3 if ( self = [super init] )
4 {
5 // Class-specific initializations
6 }
7 return self;
8 }
首先得調用父類的init函數方法,然後在if的語句塊裡寫一些自己特色的初始化操作(第5行)。
可以在你執行個體化的時候提供更多參數以便實現對對象的快速賦值。重寫init可以讓你建立的對象出來就是成品。而不重寫的話,還需要你對該對象的屬性進行賦值。
  • load 方法會在載入類的時候就被調用,也就是 ios 應用啟動的時候,就會載入所有的類,就會調用每個類的 + load 方法。
  • 在沒有對類做任何操作的情況下,+load 方法會被預設執行,並且是在 main 函數之前執行的。程式啟動之前會調用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.