首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSColor和NSGradient作为属性-有什么理由要复制吗?

NSColor和NSGradient作为属性-有什么理由要复制吗?
EN

Stack Overflow用户
提问于 2008-11-05 00:18:51
回答 2查看 773关注 0票数 4

我非常熟悉为什么想要复制一个属性而不是保留。(本质上是值与关系参数。例如,您几乎总是希望复制字符串。)

那NSColor和NSGradient呢?

它们都符合NSCopying,但目前的实现是不可变的。

有什么想法?

EN

回答 2

Stack Overflow用户

发布于 2008-11-05 00:29:32

不可变对象通常会将其copyWithZone:方法实现为return [self retain],因为如果数据永远不会更改,那么创建单独的数据副本就没有意义了。但是,他们仍然需要实现该方法,以便与任何期望NSCopying一致性的东西(例如,NSDictionary键)兼容。

至于用法,我将坚持使用与其他“值”属性相同的用法模式,您将看不到任何性能差异,因为它们可能无论如何都会从copy调用retain。这也涵盖了一些情况,比如添加了一个具有非平凡NSCopying实现的可变子类。

票数 4
EN

Stack Overflow用户

发布于 2008-11-05 00:25:23

分配给您的属性的NSColor和NSGradient的子类可能不是不可变的或参照透明的,因此您仍然应该使用相同的逻辑来确定retain与copy,即使在大多数情况下,这在实践中不太可能是重要的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/263977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档