Я использую xCode 4.2 и прохожу книгу «Программирование в Objective C 2.0»
Существует упражнение, включающее реализацию метода isEqual:
из класса NSObject
.
В книге говорится, что метод isEqual:
запускается при вызове метода removeObjectIdenticalTo:
класса NSArray
.removeObjectIdenticalTo:
заканчивается отправкой сообщения isEqual:
всем членам массива.
Когда я пытаюсь реализовать этот метод isEqual:
в моем классе AddressCard
, и я использую removeObjectIdenticalTo:
, передавая объектэто экземпляр класса AddressCard
, однако мой метод isEqual:
не вызывается.Хотя если я просто использую метод isEqual:
для экземпляра AddressCard
явно, он работает.
Вот мой метод isEqual:
из файла AddressCard.m
-(BOOL)isEqual: (id)object {
NSLog(@"I got called");
return NO;
}
Когда этот код запускается в AddressBook.m
-(void) removeCard: (AddressCard *) theCard {
[book removeObjectIdenticalTo: theCard];
}
, указанный выше метод isEqual:
не вызывается.
Мне кажется, что я упускаю что-то важное, но из всего, что я прочитал и знаю, я думаю, что isEqual:
ДОЛЖЕН быть вызван, если removeObjectIdenticalTo:
больше не затрагивает это.
У меня есть все соответствующие методы, определенные в файлах .h.