我对查看 Apple 的文档和阅读 Cocoa 设计模式感到困惑。在 Apple 文档中copyWithZone:
,它写道:
存在此方法,因此可以在需要符合 NSCopying 协议的对象的情况下使用类对象。例如,此方法允许您使用类对象作为 NSDictionary 对象的键。您不应覆盖此方法。
因为copy
它写道:
对于采用 NSCopying 协议的类来说,这是一种方便的方法。如果没有 copyWithZone: 的实现,则会引发异常。
NSObject 本身不支持 NSCopying 协议。子类必须支持该协议并实现 copyWithZone: 方法。copyWithZone: 方法的子类版本应该首先向 super 发送消息,以合并其实现,除非子类直接来自 NSObject。
在 Cocoa 设计模式中的示例中,它们会覆盖copyWithZone:
并且在符合协议时mutableCopyWithZone:
不会覆盖。如果我想在 an 中使用我的自定义子类作为键,我应该这样做吗? copy
NSCopying
NSDictionary
还是我覆盖copy
?
同样,如果我这样做[myClass copy]
,那是调用copyWithZone:
还是copy
我的自定义子类?谢谢。