所以我有一种情况,我使用一个类作为一种结构。现在我想重写该isEqual:
方法,所以如果这种类型的对象在数组中,我可以使用[objects indexOfObject:obj]
但是,现在说obj
包含名为鸭子和鸡的对象,我想去[objects indexOfObject:duck]
,它实际上会给我索引obj
所以我尝试了这样的事情:
- (BOOL)isEqual:(id)anObject {
if([anObject isKindOfClass:[Duck class]]){
return [anObject isEqual:_duck];
}
else if([anObject isKindOfClass:[Chicken class]]){
return [anObject isEqual:_chicken];
}
return [anObject isEqual:self];
}
这不起作用,甚至没有被调用...认为这与覆盖哈希有关,我尝试通过返回 self.hash (实际上是 obj.hash)但没有奏效。
你认为这样的事情可能吗?还是我应该只使用 for 循环来搜索我的所有obj
's 以查找其中包含哪个鸭子obj
并返回它的索引(我可以这样做,只是想尝试同时保持凉爽和整洁)