Objective C では、内部クラス配列 (など) を遅延してインスタンス化する一般的な方法。
したがって、getter を呼び出すと、最初に配列が nil でないかどうかがチェックされ、必要に応じてメモリが割り当てられます。
しかし、セッターはどうですか?まだメモリを割り当てていないため、配列セルの 1 つに何らかの値を挿入しようとしている場合、どこに行くのでしょうか?
明らかに何かが欠けています。明確にしていただければ幸いです。
Objective C では、内部クラス配列 (など) を遅延してインスタンス化する一般的な方法。
したがって、getter を呼び出すと、最初に配列が nil でないかどうかがチェックされ、必要に応じてメモリが割り当てられます。
しかし、セッターはどうですか?まだメモリを割り当てていないため、配列セルの 1 つに何らかの値を挿入しようとしている場合、どこに行くのでしょうか?
明らかに何かが欠けています。明確にしていただければ幸いです。
あなたの質問を理解しているかどうかはわかりませんが、これを行うと:
@property (nonatomic, strong) NSMutableArray* myArray;
...
- (NSMutableArray *) myArray {
if(!_myArray) {
NSLog(@"created");
_myArray = [[NSMutableArray alloc] init];
}
return _myArray;
}
...
[self.myArray addObject:@"test"];
getter は、 を呼び出したときに実際に呼び出されるaddObject:
ため、「created」がログに記録されていることがわかります。