面试中很喜欢 问copy和MutableCopy,在这里总结下!!
首先理解 copy 的含义,copy的初衷是,复制一份,产生一个副本,修改副本数据,不影响原来的数据.(副本和源数据互不影响).深复制(内容复制),要理解 strong 修饰的浅复制(引用复制).
copy:只会产生不可变的副本对象(比如:NSString)
mutableCopy:只会产生可变的副本对象(比如:NSMutableString)
strong 修饰还是copy呢?
这个没有绝对的 大牛开发 也是用strong,但是有一种情况还是得清楚....
当有strong修饰NSString时,如果把一个可变的NSMutableString赋值给它,那么改变可变的NSMutableString,会影响到属性 这是我们不想看到的.(strong 是引用复制).
对于 非集合的copy和MutableCopy,copy是引用复制,MutableCopy是深复制.
对于 集合的copy和MutableCopy 都是深复制.谨记,他们都是单层深复制.即数组中的内容还是引用复制.
网友评论