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”方法就是提供自定义的相等标准
上一篇下一篇

猜你喜欢

热点阅读