【问题标题】:NSCoding VS NSCopyingNSCoding VS NSCopying
【发布时间】:2013-01-16 22:15:38
【问题描述】:

NSCoding 和 NSCopying 在底层的真正区别是什么?

另外,它们应该单独使用,一起使用还是什么时候使用哪个好?

【问题讨论】:

    标签: objective-c nscoding nscopying


    【解决方案1】:
    • NSCopying 最接近于其他语言中称为clone() 的内容,也就是说,它用于立即创建(功能性)新对象作为现有对象的抄本。

      李>
    • NSCoding 最接近serialize()/deserialize,也就是说,它用于将对象转换为可以持久存储并在以后恢复的形式,可能在其他时间重新启动程序时。

    如您所见,它们在功能上并不是很相似,而且肯定可以独立使用。

    【讨论】:

      【解决方案2】:

      虽然他们都创建了相关对象的副本,但他们以非常不同的方式进行操作。

      协议实际上只是实现一组特定功能的承诺。在 NSCopying 的情况下,它是 -copyWithZone:,在 NSCoding 的情况下,它是 –initWithCoder:-encodeWithCoder:

      NSCopying 用于制作对象的内存副本 - 另一个相同的对象。

      NSCoding 用于创建序列化表示 - NSData 对象 - 或从这样的表示创建对象。

      【讨论】:

        【解决方案3】:

        NSCoding 是关于将对象序列化到磁盘。

        NSCopying 是关于可复制(在内存中)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-23
          • 1970-01-01
          • 1970-01-01
          • 2011-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多