gpt4 book ai didi

objective-c - 为什么 iOS 类不采用 copyWithZone 协议(protocol)来鼓励 active mem mgt?

转载 作者:可可西里 更新时间:2023-11-01 04:27:52 24 4
gpt4 key购买 nike

最近在使用 Cocoa 后转向 iOS,我很吃惊地收到一个带有以下错误的 SIGABRT:“-[UIDeviceRGBColor copyWithZone:]: unrecognized selector sent to instance…”我在 UIColor 上调用了“copy”。

我查看了类引用,zounds,与 NSColor 相比,UIColor 不采用任何协议(protocol)。

现在,这没什么大不了的。我只是试图通过主动拥有颜色实例来提高效率,以便在使用后立即丢弃它。但我认为 Apple 在 iOS 中省略垃圾收集器的目的是鼓励开发人员做我正在做的事情,在内存不足、电池电量不足的可移植设备上保持精简的内存配置文件。

关于 Apple 的基本原理有什么想法,或者我的假设有什么错误吗?

最佳答案

我不明白为什么您认为实现 NSCopying 协议(protocol)会“鼓励主动内存管理”。

因为 UIColor 是不可变的(它没有实现任何改变其内部状态的方法),所以复制是没有意义的。如果您想保留它,只需保留它,并在完成后释放它。不需要其他任何东西。

如果你真的想要,你可以在一个类别中添加复制:

@implementation UIColor (Copying) <NSCopying>

- (id)copyWithZone:(NSZone *)zone
{
return [self retain];
}

@end

但显然这实际上并没有给您任何新功能。显然,Apple 在实现该类(class)时认为不值得花时间。

关于objective-c - 为什么 iOS 类不采用 copyWithZone 协议(protocol)来鼓励 active mem mgt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759825/

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