Первый и последний объекты в вашем массиве - это элементы кнопок панели, созданные с помощью системного элемента «фиксированный пробел».
Результат вызова indexOfObject:
равен 0
, а не nil
.Это означает, что объект находится по индексу 0
.indexOfObject:
не может вернуться nil
.Если объект не найден, он возвращает специальное значение NSNotFound
, которое является значением без знака для -1
.
Из документации для indexOfObject:
:
Запускпри индексе 0
каждый элемент массива передается в качестве аргумента в сообщение isEqual:
, отправляемое anObject, до тех пор, пока не будет найдено совпадение или не будет достигнут конец массива.Объекты считаются равными, если isEqual:
(объявлено в протоколе NSObject
) возвращает YES
.
Реализация UIBarButtonItem isEqual:
вернет YES
, если созданы два экземпляра элемента кнопки панелис тем же системным элементом (и, возможно, с некоторыми другими свойствами).
indexOfObject:
не основан на экземпляре объекта, он основан на isEqual:
.
Если выЕсли вы хотите найти индекс объекта на основе идентификатора (его адреса) объекта вместо isEqual:
, используйте indexOfObjectIdenticalTo:
.
p [items indexOfObjectIdenticalTo:items.lastObject]
, чтобы получить 6
вместо 0
.