2012-04-06 18 views
0

すべてのクラスがスーパークラスから初期化子を継承するので、 のデフォルトの実装を指定された初期化子にリンクした方法です。 (それは働いています。)指定された初期化子にスーパークラスの初期化メソッドをリンクする

リンク:

-(id)init { 
    return [self initWithItemName:@"Default Value" 
        valueInDollar:0 
        serialNumber:@""]; 
} 

イニシャライザ:

-(id)initWithItemName:(NSString *)myItemName 
     valueInDollar:(int)myValueInDollar 
     serialNumber:(NSString *)mySerialNumber; 

私の質問は、私はいつも自分自身の初期化(リンク)私はそれをやった方法をリンクしなければならないのですか? 以下のコードなしで、独自のイニシャライザは決して呼び出されませんか?私は正しい?

-(id)init { 
    return [self myInitMethod......"]; 
} 

答えて

1

あなただけinitWithItemNameを使用してオブジェクトを初期化した場合は、すべてでinitメソッドを定義する必要はありません。イニシャライザは通常のメソッド(魔法は含まれていません)ですから、呼び出すものは呼び出されるものです。しかし、initメソッドを実装して呼び出すことができ、オブジェクトが一貫性のある状態になるようにすることをお勧めします。

関連する問題