iOS 中的 == 与 isEqual

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”方法就是提供自定义的相等标准
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容