Appleは、初期化子でプロパティメソッドを使用しないことをお勧めしますが、オブジェクトが初期化された後、プログラム内の他の場所からも呼び出す必要がある初期化子からメソッドを呼び出す必要がある場合に従うプロトコルがわかりません。たとえば、次のようになります。
- (id) init
{
self = [super init];
if (self)
{
[self someMethod];
}
return self;
}
- (void) someMethod
{
_x = 0; \\ or self.x = 0 when this method is not called from initializer
}
someMethod
その中にたくさんのivarsが含まれています。問題は、オブジェクトが初期化された後、コード内のどこかで他の場所を呼び出す必要があることです。イニシャライザーから呼び出されたときにアクセサーにアクセスしないようにしたいのsomeMethod
ですが、他の場所から呼び出されたときにアクセサーにもアクセスしたいのですが。このパターンを回避するためのきちんとした方法はありますか?使用する場合NSObject
?使用する場合UIView
?使用する場合UIViewController
?