【问题标题】:Arguments for a copy method versus a copy constructor in Objective-CObjective-C 中复制方法与复制构造函数的参数
【发布时间】:2011-11-30 05:45:01
【问题描述】:

我对 Objective-C 的世界还比较陌生,并且我已经编写了一个类,我想在其中添加创建副本的功能。

来自 Java,我知道我可以编写复制构造函数或克隆方法,后者通常是 not being recommended。但是,Objective-C 是一种不同的语言,在继续之前,我想了解一下在 Objective-C 中复制方法与复制构造函数的参数。最常用的方法是什么?

【问题讨论】:

    标签: objective-c copy clone copy-constructor


    【解决方案1】:

    添加复制对象功能的推荐方法是实现NSCopying protocol。 许多基础类也实现了 NSCopying。

    有关更多信息,请参阅此答案:Implementing NSCopying

    【讨论】:

      【解决方案2】:

      使用:-(id)copyWithZone:(NSZone*)zone,它是 NSCopying protocol 的一部分

      例子:

      在.h中:

      @interface MyClass : NSObject <NSCopying>
      

      在.m

      -(id)copyWithZone:(NSZone*)zone {
          MyClass *copy = [[[self class] allocWithZone: zone] init];
          copy.user = self.user;
          copy.password = self.password;
      //    etc
      
          return copy;
      }   
      

      【讨论】:

        猜你喜欢
        • 2020-07-14
        • 2013-12-19
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 2015-02-07
        • 1970-01-01
        • 2015-07-15
        • 2011-03-21
        相关资源
        最近更新 更多