解决方法
比较Objective-C中的对象与
Java或其他面向对象语言中的对象大致相同:
> ==比较对象引用;在Objective-C中,它们是否占用相同的内存地址.
> isEqual :,一个定义在NSObject上的方法,检查两个对象是否“相同”.您可以覆盖此方法为您的对象提供自己的等式检查.
所以一般要做你想要的,你会做的:
if(![myArray containsObject:anObject]) { [myArray addObject:anObject]; }
这是因为Objective-C数组类型NSArray有一个名为containsObject的方法:它将isEqual:消息发送给对象作为参数包含的每个对象.它不使用==,除非执行isEqual:依赖于==.
如果您完全使用实现的对象,请记住可以覆盖isEqual:提供您自己的等式检查.通常这是通过比较对象的字段来完成的.