根据这篇文章:Understanding NSString comparison它会给出不同的结果但是当我尝试使用下面提到的不同场景时,它给了我相同的结果。
我只是想知道什么时候'=='和'isEqualToString:'给出不同的结果。对我来说它给出了相同的结果。
我尝试了下面提到的方法:
NSString *str1 = @"Hello!";
NSString *str2 = @"Hello!";
if(str1 == str2){
}
if([str1 isEqualToString:str2]){
}
=================
NSString *str1 = [[NSString alloc] initWithString:@"Hello!"];
NSString *str2 = [[NSString alloc] initWithString:@"Hello!"];
if(str1 == str2){
}
if([str1 isEqualToString:str2]){
}
=================
ClassA *obj1 = [[ClassA alloc] initWithString:@"Hello!"];
ClassA *obj2 = [[ClassA alloc] initWithString:@"Hello!"];
// The above "initWithString:" is the custom initializer for ClassA.
if(obj1.str == obj2.str){
}
if([obj1.str isEqualToString:obj2.str]){
}
=====
上述每种方式都给我相同的结果。据我所知,直到现在'=='比较对象引用和'isEqualToString:'比较对象的值。
任何详细的答案都会非常有用!