我有这个扩展NSObject的BasicNode接口。
在某些时候,我需要使用它的一个实例作为字典的键:
BasicNode *node = [BasicNode node];
[aMutableDictionary setObject:@"hello" forKey:node]
这会导致程序崩溃,“信号SIGABRT”。在Java中,hashmap会在对象上调用默认的哈希方法来获取其密钥。是否有一种机制在objC中实现允许使用对象作为NS(Mutbale)字典的键?
答案 0 :(得分: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;
}
这是来自this博文!
祝你好运!