iOS-isEqual,isEqualToString和==区别

Objective-C中==是最好理解,如果两个对象的内存地址是一样,返回true,如果内存地址不一样,返回false.

isEqualToString: 字符串比较,只比较字符串本身的内容是否一致,不比较内存地址.

isEqual:首先检查指针的等同性,然后是类的等同性,最后对对象的属性和变量检查,比较成功返回true,两个对象如果isEqual比较成功会有相同的hash值,但是如果两个两个对象的hash值相等,不一定比较成功.

测试代码:

NSString *str1 = [NSString stringWithFormat:@"FlyElephant"];
    NSString *str2 = [NSString stringWithFormat:@"FlyElephant"];
    NSString *str3 = @"FlyElephant";
    
    NSLog(@"str1:-%p--str2:%p---str3:%p",str1,str2,str3);
    NSLog(@"== %d",str1 == str2);
    NSLog(@"isEqual--%d",[str1 isEqual:str2]);
    NSLog(@"%@--isEqualToString:%d",str1,[str1 isEqualToString:str2]);
    NSLog(@"%@--isEqualToString--%d",str1,[str1 isEqualToString:str3]);
FlyElephant.png

你可能感兴趣的:(iOS-isEqual,isEqualToString和==区别)