美文网首页
理解NSCopying协议

理解NSCopying协议

作者: 海浪萌物 | 来源:发表于2017-05-11 09:42 被阅读39次

    使用对象时经常需要拷贝它,如果想令自己的的类支持拷贝操作,那么就要实现NSCopying协议,该协议只有一个方法:

    -(id)copyWithZone:(NSZone*)zone

    为何会出现NSZone呢,以前开发程序时,会据此把内存分为不同的区,而对象会创建在某个区里面。现在不用了,每个程序只有一个区:默认区(default zone)。所以说,尽管必须实现这个方法,但不必担心zone参数。

    当对象调用copy方法时候,其实是调用这个协议方法!重写NSCopying方法里面可以做一些其他操作。另外拷贝的话不管属性还是实例变量都有以拷贝过来,不能共用。通常在该方法里,我们会调用下全能初始化方法来生产一个新对象,但有时候如果初始化方法可能要设置一个复杂的内部数据结构,可是在拷贝后的对象中,这个数据结构立刻要用其他数据来复写,所以没必要在设置一遍。

    对应的copy的协议还有一个NSMutableCopying协议。用于返回可变的对象。如果在可变对象上调用copy协议方法,返回的就是不可变对象。

    NSCopying和NSMutableCopying协议可以同时实现

    如果你所写的对象需要深拷贝,那么可考虑新增一个专门执行深拷贝的方法

    相关文章

      网友评论

          本文标题:理解NSCopying协议

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