mutableCopyを使用してNSMutableArrayをコピーすると、アレイの物理的な新しいコピーが作成されるようです。これの証拠は、removeObjectAtIndexを使用してコピーから要素を削除しても、元の要素は削除されないことです。ただし、コピーの要素が変更されると、元の要素も変更されます。これは、光の光子が粒子と波の両方であるのと同じくらい直感的であり、私はそれを理解していません。誰かが私にこれを説明できますか?
コードは次のとおりです。
NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:
[NSMutableString stringWithString:@"one"],
[NSMutableString stringWithString:@"two"],
[NSMutableString stringWithString:@"three"],
[NSMutableString stringWithString:@"four"],
nil];
NSMutableArray *dataArray2;
NSMutableString *mstr;
dataArray2 = [dataArray mutableCopy];
[dataArray2 removeObjectAtIndex:0];
mstr = [dataArray2 objectAtIndex:0];
[mstr appendString:@"ONE"];
NSLog(@"Data Array: ");
for (NSString *elem in dataArray) {
NSLog(@"%@",elem);
}
NSLog(@"Data Array2: ");
for (NSString *elem in dataArray2) {
NSLog(@"%@",elem);
}