0

我有这个扩展 NSObject 的 BasicNode 接口。

在某些时候,我需要使用它的一个实例作为字典的键:

BasicNode *node = [BasicNode node];
[aMutableDictionary setObject:@"hello" forKey:node]

这会使程序“signal SIGABRT”崩溃。在 Java 中,hashmap 会调用对象的默认 hash 方法来获取它的键。是否有一种机制可以在 objC 中实现以允许将对象用作 NS(Mutbale)Dictionary 的键?

4

1 回答 1

2

是的,您可以使用 NSObject 继承作为 Key,但它必须实现

 + (id)copyWithZone:(NSZone *)zone

方法,这是作为密钥使用的要求。要实现它,您自己的类是这样的:

 - (id)copyWithZone:(NSZone *)zone {
      MyObject *objectCopy = [[MyObject allocWithZone:zone] init];
      // Copy over all instance variables from self to objectCopy.
      // Use deep copies for all strong pointers, shallow copies for weak.
      return objectCopy;
 }

这是来自这篇博文!

祝你好运!

于 2012-08-23T12:31:24.860 回答