3

Objective C では、内部クラス配列 (など) を遅延してインスタンス化する一般的な方法。

したがって、getter を呼び出すと、最初に配列が nil でないかどうかがチェックされ、必要に応じてメモリが割り当てられます。

しかし、セッターはどうですか?まだメモリを割り当てていないため、配列セルの 1 つに何らかの値を挿入しようとしている場合、どこに行くのでしょうか?

明らかに何かが欠けています。明確にしていただければ幸いです。

4

2 に答える 2

4

あなたの質問を理解しているかどうかはわかりませんが、これを行うと:

@property (nonatomic, strong) NSMutableArray* myArray;
...

- (NSMutableArray *) myArray {
    if(!_myArray) {
        NSLog(@"created");
        _myArray = [[NSMutableArray alloc] init];
    }

    return _myArray;
}

...
[self.myArray addObject:@"test"];

getter は、 を呼び出したときに実際に呼び出されるaddObject:ため、「created」がログに記録されていることがわかります。

于 2013-10-01T07:52:10.997 に答える