1.拷贝或者引用对象为不可变对象时
NSArray * nsarray = [NSArray arrayWithObject:@"1"];
self.strongArr = nsarray;
self.copyingArr = nsarray;
打印地址可以看到是同样的,因为对于不可变数组,字典的copy是浅拷贝。
2.NSArray何时用strong会出错?
可以看到strong修饰时,self.strongArr其实就是指向了arr,变成了可变数组,如果外部传入的arr变化了,也会导致你本想使用的nsarray改变。
3.为什么NSMutablexxxxx 要用strong?
可以看到copy修饰的是对arr的深拷贝,此时self.copyingArr变成了NSArray类型,如果执行 [self.copyingArr addObject:@”1”]; 此时会崩溃,因为self.copingArr为不可变数组。并且此时self.strongArr会根据arr的改变而改变。