当'=='运算符和“isEqualToString:”在比较两个字符串时给出相同的结果?

时间:2016-09-07 20:11:15

标签: ios objective-c nsstring

根据这篇文章: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:'比较对象的值。

任何详细的答案都会非常有用!

0 个答案:

没有答案