2013-05-27 28 views
1

我明白有一個初始化程序的目的是將實例變量設置爲某些值。然而,我很困惑,爲什麼你想爲每個實例變量有多個初始化器。一個初始化程序不能設置所有的實例變量嗎?我想我的問題的確是在一個類中有多個初始化器的實用性。例如,一個類有以下幾點:多個初始化程序的目的是什麼

- (id)initWithItemName:(NSString *)name 
    { 
    return [self initWithItemName:name valueInDollars:0 serialNumber:@""]; 
    } 

同時指定初始化給出這樣的:

- (id) initWithItemName:(NSString *)name valueInDollars:(int)value 
            serialNumber:(NSString *)sNumber; 

指定初始化,你可以看到,已經初始化變量ITEMNAME。那麼,對於一個變量只有一個特定的初始化函數是什麼?

+0

我正打算輸入一個很好的長答案,但我看到布萊克首先做到了這一點......所以這裏有一些來自Apple的文檔可能有助於解釋一些事情:[多個初始化器和指定初始化器]( http://developer.apple.com/library/ios/Documentation/General/Conceptual/CocoaEncyclopedia/Initialization/Initialization.html#//apple_ref/doc/uid/TP40010810-CH6-SW3)。 –

回答

1
  • 默認值。如果您使用指定的初始值設定項,並且每次都必須指定一個默認值,那麼如果您想更改此默認值,則會很痛苦,因爲您必須轉到此初始值設定項的每個實例並更改該值。如果你有一個初始化器集中了默認值的位置,那麼很容易改變。
  • 棄用。如果以後需要在類和初始化程序中添加一個變量,那麼在不需要指定值時不必更改每個初始化變量的地方。
相關問題