3

いつ使用する必要があるかを理解しようとしますcopyか?新しいメモリを割り当てると思ったのですcopyが、そうではありません。たとえば、次のようになります。

NSArray *array = @[@"111", @"111"];
NSArray *array1 = array.copy;
NSMutableArray *array2 = array.copy;
NSMutableArray *array3 = array.mutableCopy;
NSArray *array4 = array.mutableCopy;

array3 と array4 にのみ割り当てられた新しいメモリ。したがって、array1 と array2 に対して簡単に実行できます。

NSArray *array1 = array;
NSMutableArray *array2 = array;

コピーを使用できる場合、不変のarray2を作成するだけですが、いつ役立つのでしょうか?

4

2 に答える 2

8

Cocoa では、このcopyメソッドは非常にスマートです。オブジェクトがimmutableの場合、変更できないオブジェクトをコピーしても意味がないため、コピーを作成せずに自身を返すことができます。あなたの例でNSArrayは、不変であり、NSMutableArray可変です。そのため、変更可能なオブジェクトのみが実際のコピーを行います。もちろん、すべての変更可能なコピーも新しいメモリを割り当てる必要があります。

于 2013-03-30T21:21:50.133 に答える