2011-05-27 95 views
10

如何知道哪個初始化程序是任何類的指定初始化程序? 我猜測這是一個需要最多參數的人,但可能有時候這是不正確的。如何知道哪個初始化程序是指定的初始化程序?

+0

「指定初始化程序」是什麼意思? init是標準。 – shawnwall 2011-05-27 01:03:02

+1

@shawnwall:指定的初始化程序是所有其他init ...方法調用的init ...方法。例如。對於'UIView'和'NSView',這是'initWithFrame:'(它在文檔中提到過)。請參閱[這裏](http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAllocInit.html#//apple_ref/doc/uid/TP30001163-CH22-106376)瞭解更多詳情 – omz 2011-05-27 01:06:19

回答

6

omz的答案可以更加明確地說明:框架類的文檔將指定哪個是指定的初始化程序。有必要知道指定的初始化程序是爲了編寫適當行爲的子類。子類的D.I.必須打電話給超級的D.I.以確保它被正確初始化。

然而,你對最多參數的猜測是有根據的。蘋果實際上表示它是經常是 D.I.在幾個地方。

Cocoa Core Competencies

一類的初始化,它利用初始化參數的全套通常是指定的初始化。

Cocoa Fundamentals

某些子類提供了提供缺省值到需要的初始化參數完全互補的初始化便利初始化。這個初始化器通常是指定的初始化器,它是一個類的最重要的初始化器。

+0

謝謝。一如既往,答案在文檔中! – lampShade 2011-05-27 02:16:24

+0

@lampShade::)一如既往。除Cocoa之外的其他框架_應該指定指定的初始化器,如果它們打算用戶子類。如果他們沒有這樣指定,那麼得到一個新的框架!樂意效勞! – 2011-05-27 02:30:49

0

如果不查看源代碼(不可能用於系統框架)或文檔(可能是超類),您無法真正瞭解這一點。

+0

嘿,你寫了新聞架!我喜歡那個應用程序。我每天早上都會閱讀我的Feed。不錯的工作! – lampShade 2011-05-27 01:11:04

0

從BigNerdRanch iOS的編程書籍:

*指定初始化要求在做任何事情之前超類的指定初始化(直接或間接)。

* 任何其他初始化程序調用該類的指定初始值設定項(直接或間接)。

*如果一個類聲明瞭一個與它的父類不同的指定初始化方法,則必須重寫超類的指定初始化方法來直接或間接地調用新的指定初始化方法。

Conway,Joe; Hillegass,亞倫; Keur,Christian(2014-02-14)。 iOS編程:大書呆子牧場指南(第4版)(大書呆子牧場指南)(Kindle Locations 1906-1910)。皮爾遜教育。 Kindle版。