두 실례 대상이 같은지 아닌지를 비교하는 방법
4235 단어 iOS 기본(OC)
EOCPerson.h
#import
@interface EOCPerson : NSObject
@property(nonatomic,copy) NSString *firstName;
@property(nonatomic,copy) NSString *lastName;
@property(nonatomic,assign) NSUInteger age;
@end
EOCPerson.m
#import "EOCPerson.h"
@implementation EOCPerson
-(BOOL)isEqual:(id)object
{
if (self == object) return YES;
if ([self class] != [object class]) return NO;
EOCPerson *otherPerson = (EOCPerson*)object;
if (![_firstName isEqualToString:otherPerson.firstName]) {
return NO;
}
if (![_lastName isEqualToString:otherPerson.lastName]) {
return NO;
}
if (_age != otherPerson.age) {
return NO;
}
return YES;
}
-(NSUInteger)hash
{
NSUInteger firstNameHash = [_firstName hash];
NSUInteger lastNameHash = [_lastName hash];
NSUInteger ageHash = _age;
return firstNameHash^lastNameHash^ageHash;
}
@end
요점
복습하다.
^ 비트별 또는:
복습
1^2 = 3
2^3 = 1
3^4= 7
...
숫자를 2진법으로 바꾸기
1 = 001
2 = 010
3 = 011
4 = 100
비트별 또는 조작별 해석:
1^2 = 001
010
------
011
= 3
2^3 = 010
011
------
001
= 1
3^4 = 011
100
------
111
= 7