重写复制或copyWithZone:还是两者兼而有之?

我很困惑,看苹果的文档和阅读可可设计模式。在copyWithZone:的苹果文档中,它的内容如下:

此方法存在,因此在需要符合NSCopying协议的对象的情况下,可以使用类对象。例如,此方法允许您将类对象用作NSDictionary对象的键。不应重写此方法。

对于copy,它的内容如下:

--对于采用NSCopying协议的类来说,这是一种方便的方法。如果copyWithZone:没有实现,则会引发异常。

NSObject本身不支持NSCopying协议。子类必须支持协议并实现copyWithZone:方法。copyWithZone:方法的子类版本应该首先向super发送消息,以合并其实现,除非子类直接从NSObject下降。

在Cocoa中的示例中,它们覆盖copyWithZone:和mutableCopyWithZone:,但在遵循NSCopying协议时不覆盖copy。如果我想使用NSDictionary中的自定义子类作为键,我应该这样做吗?

还是我要重写copy?

类似地,如果我做了[myClass copy],那么它会调用copyWithZone:或copy作为我的自定义子类吗?谢谢。


三星手机烫手怎么回事
炒茄子不變色終極指南:不發黑不吸油的完美秘訣