1

首先,我想确认我已经正确理解了 NSCopying ...

为了使用简单的 NSObject 子类作为 NSDictionary 中的键,我必须让它实现 NSCopying 协议。在复制的实例的 copyWithZone 方法中,我必须分配/初始化我的类的一个新实例,将其属性设置为与复制的实例相同并返回它。

其次,为什么 NSDictionary 使用添加到它的实例的副本而不是实例本身?

4

2 回答 2

3

子类如果是对象就不需要实现NSCopying,key一般应该是NSStrings,复制过来。

于 2011-09-26T14:52:50.740 回答
1
  1. 如果你想让它们可复制,你必须为每个自定义类实现 NSCopying 协议
  2. 它必须使用副本,因为如果您要修改原始字典中包含的对象,则其副本不会受到更改的影响
于 2011-09-26T14:56:33.010 回答