NSArray 和 NAMutableArray 采用 strong 还是 copy 修饰?

深拷贝和浅拷贝

深拷贝和浅拷贝.png

浅拷贝:复制一个指针对象,指向的还是原来对象所指向的地址,并没有对数据进行拷贝;
深拷贝:复制一个值针对象,同时将原对象所指向地址下的数据复制一份,并分配新的地址,复制的指针对象指向新数据的地址;

NSMutableArray 应该使用 strong 修饰;

因为如果采用copy返回的对象都是不可变的,采用 copy 修饰 NSMutableArray 的话,如下:

self.array = [NSMutableArray array]; //相当于 self.array = [[NSMutableArray array] copy] 返回一个不可变数组;

[self.array addObject:@"1"]; //因为 self.array 本质为不可变数组,所以会崩溃;

NSArray 应该使用 copy 修饰;

因为 retain 操作为浅拷贝,采用 strong 修饰 NSArray 的话,如下代码会导致 NSArray 的值被改变;
NSMutableArray *mutableArray = [NSMutableArray array];
self.array = mutableArray;
[mutableArray addObject:@"1110"];

推荐阅读更多精彩内容