use*_*271 3 copy objective-c ios
我试着了解何时需要使用copy?我认为copy分配新内存,但事实并非如此.所以,例如:
NSArray *array = @[@"111", @"111"];
NSArray *array1 = array.copy;
NSMutableArray *array2 = array.copy;
NSMutableArray *array3 = array.mutableCopy;
NSArray *array4 = array.mutableCopy;
Run Code Online (Sandbox Code Playgroud)
仅为array3和array4分配的新内存.所以,我可以简单地为array1和array2做:
NSArray *array1 = array;
NSMutableArray *array2 = array;
Run Code Online (Sandbox Code Playgroud)
当我可以使用copy时,它只会生成不可变的array2,它对我有用吗?
在Cocoa中,该copy方法可以非常智能:如果一个对象是不可变的,它可以在不进行复制的情况下自行返回,因为复制无法更改的对象没有意义.在您的示例中,NSArray是不可变的,并且NSMutableArray是可变的.这就是为什么只有可变对象进行实际复制的原因.当然,所有可变副本也必须分配新内存.
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |