iOS 中的 == 与 isEqual
2019-03-29 本文已影响0人
__May__
iOS中判断两个对象是否相等
1.== 比较两个对象的内存地址;
2.isEqual: 默认情况下是比较两个对象的内存地址;isEqual:就是提供了一个可以自定义相等标准的方法。系统自带的类(比如Foundation中的NSString,NSArray等)重写了这个方法,改变了这个方法的判断规则,一般改为比较两个对象的内容,不是内存地址.
ShiJueViewController *vc = [[ShiJueViewController alloc]init];
ShiJueViewController *vc1 = [[ShiJueViewController alloc]init];
NSArray *a = @[@1];
NSArray *b = a;
NSArray *c = @[@1];
if (a==b) {NSLog(@"a ==b");} //YES
if (a==c) {NSLog(@"a==c");} //NO
if ([a isEqual:b]) {NSLog(@"a isEqual: b");} //YES
if ([a isEqual:c]) {NSLog(@"a isEqual: c");}//YES
if ([vc isEqual:vc1]) {NSLog(@"vc isEqual: vc1");}//NO
// == 指针相同 重写“isEqual”方法就是提供自定义的相等标准