一,集合类型(NSArray、NSDictionary、NSSet等类型)与非集合类型(NSString等类型)
类型 copy mutableCopy
不可变类型(集合、非集合) 不产生新对象,浅拷贝 mutableCopy结果,产生新对象,深拷贝
可变类型(集合、非集合) 产生新对象,深拷贝 mutableCopy结果,产生新对象,深拷贝
总结:
copy 对不可变对象 不会产生新的对象
copy 对可变对象 会产生新的对象
mutableCopy结果,产生新对象
二,copy与strong对不可变类型(NString、NSArray、NSSet),以及对可变类型(NSMutableString、NSMutableArray、NSMutableSet)的影响
类型 修饰词
不可变类型(集合、非集合) copy修饰,原始数据删除元素,它也不回改变
可变类型(集合、非集合) strong修饰,copy修饰后,NSMutaleArray由可变类型变成了不可变类型,没有增、删元素的方法,所以崩溃
总结
对不可变类型(NString、NSArray、NSSet),要用copy修饰;
可变类型(NSMutableString、NSMutableArray、NSMutableSet),要用strong修饰;
用copy还是strong修饰一个属性时,赋值来源很重要
网友评论