NSMutableArray にオブジェクト (オブジェクト X など) を追加するときに ARC が有効になっている場合、そのオブジェクト X がコードの他の場所で直接変更された場合、NSMutableArray 内の「コピー」も更新する必要がありますか?
NSMutableArray は元のオブジェクトのポインタを参照しているだけですか?
NSMutableArray にオブジェクト (オブジェクト X など) を追加するときに ARC が有効になっている場合、そのオブジェクト X がコードの他の場所で直接変更された場合、NSMutableArray 内の「コピー」も更新する必要がありますか?
NSMutableArray は元のオブジェクトのポインタを参照しているだけですか?
それがそうならcopy
、いいえ。参照として追加した場合は、はい。オブジェクトへの単なるポインタであるため、オブジェクトへの変更は配列内のオブジェクト参照に適用されます。
配列の NSMutable 部分と混同しないでください。通常の NSArray でも同じことが起こります。オブジェクトを変更すると、配列は変更されたオブジェクトへの参照を持つことになります。変更可能な部分は、配列内のオブジェクトではなく、配列にのみ適用されます。
このように追加するときではありません:
[marray addObject:[object2 copy]];
しかし、このように(参照として)追加すると、更新されます:
[marray addObject:object2];