NSArray indexOfObject:没有按我的预期行事

时间:2013-08-05 09:31:50

标签: ios indexing nsarray

为了简单起见,我正在聊聊:

我有一个包含消息的NSArray,因此我创建了一个类Message。每次收到Message对象时,我都会在NSArray中添加它。

我现在有一个看起来像这样的NSArray:

(
    "<Message: 0xa8839c0>",
    "<Message: 0x15908480>",
    "<Message: 0x159c6e20>",
    "<Message: 0xa8cb530>",
    "<Message: 0x1593a680>",
    "<Message: 0x956ff50>",
    "<Message: 0x1885f130>",
    "<Message: 0x18121db0>"
)

如您所见,我的所有物品都不同。

现在,如果我这样做:

for (Message *message in self.messages) {
    NSNumber *idx = [NSNumber numberWithInteger:[self.messages indexOfObject:message]];
    NSLog(@"%@ : %@ : %@", idx, message, message.message);
    }

我明白了:

(
        1 : "<Message: 0xa8839c0>" : my message 1,
        2 : "<Message: 0x15908480>" : my message 2,
        3 : "<Message: 0x159c6e20>" : my message 3,
        4 : "<Message: 0xa8cb530>" : my message 4,
        5 : "<Message: 0x1593a680>" : my message 5,
        5 : "<Message: 0x956ff50>" : my message 6,
        5 : "<Message: 0x1885f130>" : my message 7,
        5 : "<Message: 0x18121db0>" : my message 8
    )

第4行和第5行之间发生了什么:我有很好的观点并回来聊天。 但问题是NSArray中的对象是不同的!

indexOfObject的描述:是:

  

返回其对应数组值等于a的最低索引   给定对象。

     

从索引0开始,发送数组的每个元素   一个isEqual:消息,直到找到匹配或数组的结尾为止   到达。此方法将anObject参数传递给每个isEqual:   信息。如果isEqual:对象被认为是相等的(在...中声明   NSObject协议)返回YES。

我不知道indexOfObject:如何与对象不同。

我做错了哪一部分?

谢谢

0 个答案:

没有答案