我有一個人的類,覆蓋方法的isEqual:iOS版 - NSArray的indexOfObject不叫的isEqual定製
#import "People.h"
@implementation People
@synthesize name = _name;
-(BOOL)isEqual:(id)object {
NSLog(@"A.isEqual called");
if ([object isKindOfClass:[NSString class]]) {
NSString *name = object;
return [self.name isEqualToString:name];
}
return [super isEqual:object];
}
@end
當我找到一個數組的人,它不調用方法的isEqual:
People* p1 = [People new];
p1.name = @"A";
People* p2 = [People new];
p2.name = @"B";
NSArray* peopleArray = [NSArray arrayWithObjects:p1, p2, nil];
NSLog(@"find A %ld", [peopleArray indexOfObject:@"A"]);
NSLog(@"isEqual A -> %@", [p1 isEqual:@"A"] ? @"Yes" : @"No");
這裏是輸出:
2013-04-10 18:15:47.988 runone[6273:303] find A 9223372036854775807
2013-04-10 18:15:47.988 runone[6273:303] A.isEqual called
2013-04-10 18:15:47.989 runone[6273:303] isEqual A -> Yes
你知道爲什麼?
你有在.h中聲明嗎? – 2013-04-10 11:45:11
不,我沒有,Anoop – thanhbinh84 2013-04-11 02:54:52
在那裏聲明,你的方法會被調用。 – 2013-04-11 03:36:22