objective-C編程 初始化方法摘要

    初始化方法的定義

新追加的實例變量有時需要被初始化。另外,子類也可能需要同父類不同的初始化方法。這些情況下就需要爲子類定義自己的初始化方法。

子類中重寫init初始化方法的時候,通常按照以下邏輯。其他以init開頭的初始化方法也是同理。

- (id)init  {
     self = [super init]   //一定要在第一行調用父類 的init的方法。
      if (self != nil) {   //父類返回了初始化好的實例時。
          ...              //子類專有的初始化操作
      }
      return self;
}
如果所有的類的初始化方法都這樣寫,那麼根類NSObeject的init方法就一定會被執行。否則生成的對象就無法使用。。與此同時,這樣做也可以防止漏掉父類中定義的實例變量的初始化。

執行的時候父類的初始化方法可能會出錯。出錯時則會返回nil,這種情況下子類也不需要再進行初始化,直接返回nil就可以了。

生成實例對象的方法alloc會把實例對象的變量都初始化爲0(實例變量isa除外)。所以,如果子類中新追加的實例變量的初值可以爲0,則可以跳過子類的初始化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章