これが必ずしも @properties だけに当てはまるとは限らないことは理解していますが、最も一般的な使用例です。ある場合、例えば:
@property (strong) NSObject *object;
...
@synthesize object = _object;
init
次のように、宣言されているクラスのメソッドで初期化することができます。
- (id)init {
self = [super init];
if (self) {
_object = [[NSObject alloc] init];
}
}
またはゲッターをオーバーライドして、最初の使用時に初期化します。
- (NSObject *)object {
if (!_object) {
_object = [[NSObject alloc] init];
}
return _object;
}
これらのうち、どれを使用するのが良いですか?これは使用シナリオに依存しますか (たとえば、プロパティが宣言されているオブジェクトに複数の初期化子があるか、プロパティの型、使用方法など)?
ゲッターをオーバーライドする本当の利点は、プロパティが必要なときにのみ割り当てられることですが、最初のアクセスが遅くなるという欠点があります。
init
余談ですが、メソッド内のプロパティにアクセスする場合、または としてアクセスする方がよいでしょうself.object
か_object
?