Существует много ответов здесь о том, почему компилятор, который позволяет Вам скрыть функцию членства тихо , является плохой идеей. Но никакой современный компилятор тихо не скрывает функции членства. Даже в C++, где позволяется сделать так, всегда существует предупреждение об этом, и это должно быть достаточно.
Итак, почему требуют, "повторно представляют"? Главная причина состоит в том, что это - вид ошибки, которая может на самом деле появиться случайно, когда Вы не смотрите на предупреждения компилятора больше. Например, скажем, Вы наследовались TComponent, и разработчики Дельфи добавляют новую виртуальную функцию к TComponent. Плохие новости являются Вашим полученным компонентом, который Вы записали пять лет назад и распределили другим, уже имеет функцию с тем именем.
, Если компилятор просто признал, что ситуация, некоторый конечный пользователь мог бы перекомпилировать Ваш компонент, проигнорировать предупреждение. Странные вещи произошли бы, и Вы обвинить. Это требует, чтобы они явно признали, что функция не является той же функцией.
You want the indexOfObject:
method, which looks for the object by sending each object in the array an isEqual:
message.
Peter's answer is correct.
One additional note; if you have tons and tons of strings in the array, -indexOfObject:
is going to do a linear search. This may prove to be a performance bottleneck for which you should consider using a different container; an NSSet or NSDictionary, possibly (depending on what the strings mean).
Another gotcha is if the strings are all relatively similar and/or relatively long.
Of course, don't bother optimizing anything until you have used the analysis tools to prove that you have a performance issue.