iOS 中的copy

2018-12-20  本文已影响4人  lixiaoshuai

iOS 关于拷贝:

  1. 如何让自定义的类实现拷贝功能?
    实现 <NSCopying> 协议 -(id) copyWithZone:(NSZone*)zone;
    在方法中创建一个新的对象
    对于自定义类调用copy方法即可拷贝一个新的对象

  2. 拷贝功能对私有变量的处理?
    在copyWithZone: 中单独拷贝数据值

  3. 对需要深拷贝的值单独写一个深拷贝方法?
    将需要深拷贝的集合值,在深拷贝方法中单独拷贝
    深拷贝集合类的参考方法 -initWithArray: copyItem:

  4. 具有可变版本的容器类拷贝的实现规则
    immutable copy // 指针指向,不拷贝新值
    immutable mutableCopy // 生成可变对象,不拷贝集合中每一个对象(内容浅拷贝)
    mutable copy // 生成不可变对象,不拷贝集合中每一个对象(内容浅拷贝)
    mutable mutableCopy // 指针指向,不拷贝新值

  5. 重写copy属性的set方法(arc)

可以在set方法进行的逻辑:
a:对参数的限制条件 例如 :(设置速度,限制速度必须在 0 -500 之间)

tips:设置readonly不能设置set方法的

  1. 对于copy的对象也可将 权限属性 设置为readonly
上一篇 下一篇

猜你喜欢

热点阅读