我使用的Xcode 4.2去除對象的時候,並通過這本書去那不叫「編程在Objective C 2.0」重寫isEqual:方法方法,但是從陣列
有是涉及從實現isEqual:
方法練習類NSObject
。
該書說isEqual:
方法是在調用NSArray
類的removeObjectIdenticalTo:
方法時觸發的。 removeObjectIdenticalTo:
最終將isEqual:
消息發送給所有陣列成員。
當我想在我AddressCard
類以實現此isEqual:
方法,我用removeObjectIdenticalTo:
,傳遞一個對象,它是AddressCard
類的實例,但是,我的isEqual:
方法不獲取調用。雖然如果我只是明確地在AddressCard
的實例上使用isEqual:
方法,它確實有效。
這是我從AddressCard.m文件
-(BOOL)isEqual: (id)object {
NSLog(@"I got called");
return NO;
}
isEqual:
方法當此代碼AddressBook.m
-(void) removeCard: (AddressCard *) theCard {
[book removeObjectIdenticalTo: theCard];
}
上面列出的isEqual:
方法不叫被激發。
我覺得我錯過了一些重要的東西,但是從我看過的所有內容中我都知道,我認爲isEqual:
必須被調用,除非removeObjectIdenticalTo:
不再涉及它。
我也在.h文件中定義了所有相應的方法。
非常感謝。有沒有removeObjectIdenticalTo方法列表的地方?因爲我只能跳轉到.h定義文件。 – Evgenius 2011-12-25 07:10:43