为了简单起见,我正在聊聊:
我有一个包含消息的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:如何与对象不同。
我做错了哪一部分?
谢谢