1

次のようなコンストラクタがあります。

-(id) init 
{
    // do something here...not sure what yet  :)
}

このクラスのオブジェクトを正常にインスタンス化できますが、このクラスのメソッドを呼び出すとエラーが発生しました。なぜそうなのですか?ここで何が欠けていますか?スーパークラスのコンストラクターを呼び出す必要がありましたか? それとも何らかの形でメモリの問題がありますか?

ありがとう!

4

2 に答える 2

4

ここで何が欠けていますか?

selfスーパークラスの指定された初期化子への呼び出し、への代入、およびreturnステートメントがありません。

最小限の未完成のコンストラクターは次のようになります。

-(id) init 
{
    if (self=[super init]) {
        // do something here...not sure what yet  :)
    }
    return self;
}
于 2012-07-16T18:40:23.120 に答える
1

あなたは何か、通常は自分自身を返す必要があります。あなたはあなたのメソッドがタイプ(id)を返すことを指定しています。これはobjective-cでは何でもかまいませんが、何かを返す必要があります。

典型的なinitは次のようになります。

-(id) init 
{
    self = [super init];
    if (self) {
    // do something here...not sure what yet  :)
    }
    return self;
}
于 2012-07-16T18:41:17.370 に答える