Класс Person
:
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@end
Я переписываю это isEqual:
метод:
- (BOOL)isEqual:(id)object {
Person *person = (Person *)object;
return [self.name isEqualToString:person.name];
}
Затем я сделал тест:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
Person *p1 = [[Person alloc] init];
p1.name = @"Jack";
Person *p2 = [[Person alloc] init];
p2.name = @"Jack";
if ([p1 isEqual:p2]) {
NSLog(@"p1 isEqual p2");
} else {
NSLog(@"p1 not Equal p2");
}
NSMutableSet *set = [NSMutableSet set];
[set addObject:p1];
if ([set containsObject:p2]) {
NSLog(@"contain p2");
} else {
NSLog(@"not contain p2");
}
}
Печать консоли:
p1 isEqual p2
not contain p2
О методе containsObject:
:
Каждый элемент набора проверяется на равенство с anObject, пока не будет найдено совпадение или конец конца.набор достигнут.Объекты считаются равными, если isEqual: возвращает YES.
Так что я немного запутался:
Теперь, когда p1
равен p2
, почемунабор не содержал p2
?