Stunner は、既に作成されている init オブジェクトを割り当てる必要がないことをうまく説明しました。
しかし、それが存在しないオブジェクトである場合、どこで作成するのでしょうか? あなたが投稿で言及したので言及する非常に一般的なパターンは、遅延インスタンス化です。
したがって、NSMutableArray プロパティが必要です。使用する前に何らかのメソッドで初期化を割り当てることができますが、「配列が必要になる前にそのメソッドが呼び出されるかどうか」について心配する必要があります。または「誤ってもう一度呼び出して、再初期化するつもりですか」。
したがって、それを行うためのフェールセーフな場所は、プロパティのゲッターにあります。プロパティにアクセスするたびに呼び出されます。
.h
@property (nonatomic, strong) NSMutableArray* myArray;
.m
@synthesize myArray = _myArray;
- (NSMutableArray*)myArray
{
if (!_myArray) {
_myArray = [[NSMutableArray alloc] initWithCapacity:2];
}
return _myArray;
}
そのプロパティにアクセスするたびに、「myArray は存在しますか? 存在しない場合は作成してください。存在する場合は、私が持っているものを返すだけです」と表示されます。
さらに、この設計パターンの追加の利点は、リソースが必要になるまでリソースを作成しないことです。ビュー コントローラーが読み込まれたときやアプリが起動したときにリソースを一度に作成するのではなく、要件によっては数時間かかる場合があります。秒。