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]);