22、理解NSCoping协议
Foundation框架中的所有collection类在默认情况下都执行浅拷贝,即只拷贝容器对象本身,而不复制其中数据。(主要是因为:容器里的对象未必都能拷贝,而且调用者尾部想在拷贝容器时一并拷贝其中的每个对象)
另外,不要假定遵从了NSCopying协议的对象都会执行深拷贝。在绝大多数情况下执行的都是浅拷贝。如果需要在某个对象上执行深拷贝,那么除非该类的文档说它是用深拷贝来实现的NSCopying协议,否则:要么寻找能够指向深拷贝的相关方法,要么自己编写方法实现。
要点:
若想令自定义的对象具有拷贝功能,则需实现
NSCopying协议若自定义对象分为可变版本与不可变版本,则应同事实现
NSCopying与NSMutableCopying协议复制对象时需决定采用
浅拷贝还是深拷贝,一般情况下应尽量执行浅拷贝若自定义对象需要深拷贝,那么可考虑新增一个专门执行深拷贝的方法,如
deepCopy
Last updated
Was this helpful?