Как я сравниваю объекты в Objective C?

Обычно я поддерживаю отдельные решения js, без обработчиков onevent, но если это все, что вы хотите (включить / выключить), то это подойдет:



Здесь ;

23
задан Roatin Marth 26 June 2013 в 15:21
поделиться

3 ответа

Указатели на -isEqual: хороши, но если вы реализуете -isEqual: , вы обязательно должны также реализовать -hash таким образом, что если два объекта возвращают YES для -isEqual: , они также возвращают то же значение для -hash . Реализация isEqual: без реализации -hash приводит к некоторым очень неожиданным ошибкам при использовании таких коллекций, как NSArray.

Для новых разработчиков я обычно рекомендую не перегружать - isEqual: . Я рекомендую вместо этого использовать ту же технику, что и NSString, и создать собственный -isEqualToFoo: (где Foo - ваш класс), пока вы не поймете влияние -isEqual: в коллекциях и специально хотят этого поведения. Перегрузка -isEqual: эффективна, но ошибки, которые вы можете создать, неуловимы. Создание собственного настраиваемого компаратора во многих случаях безопаснее и понятнее.

54
ответ дан 29 November 2019 в 01:10
поделиться

Стандартный способ - переопределить - (BOOL) isEqual: (id) anObject и - (NSUInteger) hash .

Вы должны прочтите документацию по протоколу NSObject и , этот SO вопрос содержит несколько интересных ответов о том, как написать свой метод хеширования.

6
ответ дан 29 November 2019 в 01:10
поделиться

Посмотрите на isEqual: и compare: метод.

1
ответ дан 29 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: