Objective-C 中复制方法与复制构造函数的参数

发布于 2024-12-08 01:28:31 字数 273 浏览 1 评论 0原文

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

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

I'm relatively new to the world of Objective-C and have a class that I've written to which I'd like to add the ability to create a copy.

Coming from Java, I know that I could either write a copy constructor or a clone method, with the latter commonly not being recommended. However, Objective-C is a different language and before I proceed I'd like to understand the arguments for a copy method versus a copy constructor in Objective-C. What is the most commonly used approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

踏月而来 2024-12-15 01:28:31

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

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

The recommended way to add the ability to copy objects is by implementing the NSCopying protocol.
Many foundation classes also implement NSCopying.

Refer to this answer for more information: Implementing NSCopying

当梦初醒 2024-12-15 01:28:31

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

示例:

在 .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;
}   

Use: -(id)copyWithZone:(NSZone*)zone which is part of the NSCopying protocol

Example:

in .h:

@interface MyClass : NSObject <NSCopying>

in .m

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

    return copy;
}   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文