[m_array objectAtIndex:m_histCount-1]
и
[m_array objectAtIndex:i+1]
вернут объект, , и вы не можете проверить объект с помощью <.Это означает, что эти две строки недопустимы. </s>
Однако в любой ситуации, когда вы ожидаете объект, получение их непосредственно из массива будет работать.Это даже работает:
if([[[m_array objectAtIndex:i+1] date] timeIntervalSinceDate:[m_array objectAtIndex:m_histCount-1] < 0])
То есть работает, если эти индексы возвращают объекты NSDate.
Поскольку массивы могут содержать любой тип объекта, лучше убедиться, что полученный объект являетсяправильного типа.
Редактировать:
Оказывается, вы можете сравнивать объекты с операндами <и>, но это бесполезно.Вы сравниваете значения их указателей, которые являются довольно случайным идентификатором.Это означает, что ваши строки верны, я думаю, но не очень полезны.
Источник: Как сравнивать объекты, используя оператор <или> в Objective-C?