Обычно я поддерживаю отдельные решения js, без обработчиков onevent, но если это все, что вы хотите (включить / выключить), то это подойдет:
Здесь ;
Указатели на -isEqual:
хороши, но если вы реализуете -isEqual:
, вы обязательно должны также реализовать -hash
таким образом, что если два объекта возвращают YES
для -isEqual:
, они также возвращают то же значение для -hash
. Реализация isEqual:
без реализации -hash
приводит к некоторым очень неожиданным ошибкам при использовании таких коллекций, как NSArray.
Для новых разработчиков я обычно рекомендую не перегружать - isEqual:
. Я рекомендую вместо этого использовать ту же технику, что и NSString, и создать собственный -isEqualToFoo:
(где Foo
- ваш класс), пока вы не поймете влияние -isEqual:
в коллекциях и специально хотят этого поведения. Перегрузка -isEqual:
эффективна, но ошибки, которые вы можете создать, неуловимы. Создание собственного настраиваемого компаратора во многих случаях безопаснее и понятнее.
Стандартный способ - переопределить - (BOOL) isEqual: (id) anObject
и - (NSUInteger) hash
.
Вы должны прочтите документацию по протоколу NSObject и , этот SO вопрос содержит несколько интересных ответов о том, как написать свой метод хеширования.