gpt4 book ai didi

objective-c - NSCopyObject 被认为是有害的?

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:45 25 4
gpt4 key购买 nike

NSCopyObject 的 Xcode 文档中,特殊注意事项部分指出:

This function is dangerous and very difficult to use correctly. It's use as part of copyWithZone: by any class that can be subclassed, is highly error prone. Under GC or when using Objective-C 2.0, the zone is completely ignored.

This function is likely to be deprecated after Mac OS X 10.6.

为什么很难正确使用?它执行浅层(逐位)复制。对象不会被复制或保留。文档对此非常清楚。

如果我没有遗漏其他原因,执行对象浅拷贝的首选替代方案是什么?

编辑:

有充分的理由想要执行浅拷贝。举个例子:一个类可能有很多实例变量,其中大部分是原始类型(整数、 float )或有意不保留以避免保留循环(委托(delegate))的对象。使用 NSCopyObject 的浅拷贝将所有这些复制到一个漂亮的、 self 记录的代码行中。任何需要引用计数的剩余 ivar 都可以单独保留或复制。

替代方法是使用指针语法 (newObject->ivar = ivar) 分配给新对象,或者创建一个具有可能大量参数的 init 方法(每个参数一个) ivar 复制)。后者让我觉得特别难看,但我想它不需要出现在标题中并暴露给世界。

最佳答案

您不应该制作不涉及正确保留/释放的浅拷贝。期间。

关于objective-c - NSCopyObject 被认为是有害的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com