0

すべてのクラスはスーパークラスからイニシャライザを継承するため、これがデフォルトの実装initをその指定されたイニシャライザにリンクした方法です。(それは働いています。)

リンク:

-(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......"];
}
4

1 に答える 1

1

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

于 2012-04-06T09:08:45.070 に答える