美文网首页
iOS 深拷贝浅拷贝

iOS 深拷贝浅拷贝

作者: 一抹相思泪成雨 | 来源:发表于2019-11-18 15:38 被阅读0次

一,集合类型(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修饰一个属性时,赋值来源很重要

相关文章

网友评论

      本文标题:iOS 深拷贝浅拷贝

      本文链接:https://www.haomeiwen.com/subject/iakbictx.html