次のようなコンストラクタがあります。
-(id) init
{
// do something here...not sure what yet :)
}
このクラスのオブジェクトを正常にインスタンス化できますが、このクラスのメソッドを呼び出すとエラーが発生しました。なぜそうなのですか?ここで何が欠けていますか?スーパークラスのコンストラクターを呼び出す必要がありましたか? それとも何らかの形でメモリの問題がありますか?
ありがとう!
次のようなコンストラクタがあります。
-(id) init
{
// do something here...not sure what yet :)
}
このクラスのオブジェクトを正常にインスタンス化できますが、このクラスのメソッドを呼び出すとエラーが発生しました。なぜそうなのですか?ここで何が欠けていますか?スーパークラスのコンストラクターを呼び出す必要がありましたか? それとも何らかの形でメモリの問題がありますか?
ありがとう!
ここで何が欠けていますか?
self
スーパークラスの指定された初期化子への呼び出し、への代入、およびreturn
ステートメントがありません。
最小限の未完成のコンストラクターは次のようになります。
-(id) init
{
if (self=[super init]) {
// do something here...not sure what yet :)
}
return self;
}
あなたは何か、通常は自分自身を返す必要があります。あなたはあなたのメソッドがタイプ(id)を返すことを指定しています。これはobjective-cでは何でもかまいませんが、何かを返す必要があります。
典型的なinitは次のようになります。
-(id) init
{
self = [super init];
if (self) {
// do something here...not sure what yet :)
}
return self;
}