NSObjectのサブクラスをiPhoneで初期化する方法は?
-
03-07-2019 - |
質問
[instance methodName:Parameter]
を使用して他のクラスがこれらのメソッドを呼び出せるように、クラスにいくつかのメソッドを記述したい。
クラスが UIViewController
のサブクラスである場合、 initWithNibName
を使用して初期化できます。しかし、 NSObjectのサブクラスにメソッドを書きたいのですが、どのように初期化できますか?
解決 2
これでうまくいくかもしれない:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
他のヒント
iphonyは正しいのですが、自分でinitメソッドを記述する必要があるとは言いません。通常、initメソッドは次のようになります。
- (id) init
{
if (self = [super init])
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
}
return self;
}
アップルのドキュメントによると
NSObjectクラスで定義されているinitメソッドは初期化を行いません。単にselfを返します。
そして、ただ書きたいと思うことができます
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
これは間違っており、ドキュメントに明示的に記載されているものに従っていません。
この(init)メソッドのカスタム実装では、super’ sを呼び出す必要があります 指定された初期化子は、新しいオブジェクトを初期化して返します。
必須。すべきではない、できる、すべきであるなど。
NSObjectのinitが将来変更されないと仮定すべきではありません。カスタムクラスの派生元のスーパークラスも同様です。
所属していません StackOverflow