0

我在向我自己的对象之一添加自定义相等检查时遇到了一些困难。

我有一个自定义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.

任何指向正确方向的指针将不胜感激!

4

0 回答 0