我在向我自己的对象之一添加自定义相等检查时遇到了一些困难。
我有一个自定义Message
对象,它有一个独特的messageID
属性,它是一个NSString
,以及关于消息的其他信息。
对象存储在 中NSMutableSet
,因此集合中需要唯一性,但我需要它们基于 而messageID
不是默认值是唯一的。
为此,我添加了以下代码。
- (BOOL)isEqual:(id)object
{
if (![object isKindOfClass:Message.self]) {
return false;
}
if (object == self) {
return true;
}
Message *otherMessage = (Message *)object;
if ([otherMessage.messageID isEqualToString:self.messageID]) {
return true;
}
return false;
}
- (NSUInteger)hash
{
return [self.messageID hash];
}
但是,当我开始将对象的实例添加Message
到集合中时,应用程序(有时,并非总是)在以下行之一崩溃:
if ([otherMessage.messageID isEqualToString:self.messageID]) {
或者
return [self.messageID hash];
基本上每当它尝试访问该messageID
属性时。
我得到的错误是EXC_BAD_ACCESS
.
任何指向正确方向的指针将不胜感激!