我在将自定义相等性检查添加到我自己的一个对象时遇到了一些困难。
我有一个自定义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]) {
OR
return [self.messageID hash];
基本上每当它试图访问messageID
属性时。
我得到的错误是EXC_BAD_ACCESS
。
非常感谢任何正确方向的指针!