NSMutableArrayをコピーして配列を変更しても参照が変更されないようにする方法を知りたいだけです。配列をコピーするにはどうすればよいですか?
これを行うには複数の方法があります。
NSArray *newArray = [NSMutableArray arrayWithArray:oldArray];
NSArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray] autorelease];
NSArray *newArray = [[oldArray mutableCopy] autorelease];
ただし、これらはすべて浅いコピーを作成します。
(編集: ARCを使用している場合は、autorelease
への呼び出しを削除するだけです。)
ディープコピーの場合は、代わりにこれを使用します。
NSMutableArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray copyItems:YES] autorelease];
注目に値する:明らかな理由で、後者ではすべての配列の要素オブジェクトにNSCopying
を実装する必要があります。