的任何一個,請幫助我瞭解字符串比較技術的Objective-CComaparing NSString的目標C
NSString *strNew1 = @"AA";
NSString *strNew2 = @"AA";
因此,要比較這兩個我們可以使用字符串,
Method 1. if (strNew1 == strNew2) {
NSLog(@"Equal");
}
或
Method 2: if ([strNew1 isEqualToString:strNew2]) {
NSLog(@"Equal");
}
在他們兩人的這個條件是成功的。但是我知道方法1在某些其他條件下會失敗。而且我也嘗試了以下條件(全部都是成功)。
NSString *strNew = @"AA";
NSString *strNew1 = @"AA";
NSString *strNew11 = [[NSString alloc] initWithString:strNew1];
NSString *strNew3 = strNew;
NSArray *arr = @[@"AA"];
NSString *strNew4 = [arr objectAtIndex:0];
NSString *strNew5 = [arr objectAtIndex:0];
_test = strNew5;
_test1 = @"AA";
if ([strNew isEqualToString:strNew1]) {
NSLog(@"Equal");
}
if (strNew == strNew3) {
NSLog(@"Equal1");
}
if (strNew == [arr objectAtIndex:0]){
NSLog(@"Equal2");
}
if (strNew == strNew4){
NSLog(@"Equal3");
}
if (strNew5 == strNew4){
NSLog(@"Equal4");
}
if (strNew4 == [arr objectAtIndex:0]){
NSLog(@"Equal5");
}
if (strNew11 == [arr objectAtIndex:0]){
NSLog(@"Equal11");
}
if (self.test == strNew4){
NSLog(@"Equal3");
}
if (self.test == self.test1){
NSLog(@"Equal3");
}
TEST *test = [TEST new]; // Tried with a class with NSString property with value "AA" . (test.strTest value is @"AA")
if (strNew == test.strTest) {
NSLog(@"Equal"); //success
}
我知道他們大多是多餘的。我無法理解這背後的基礎知識。請任何人都對此背後的概念作出明確的解釋。謝謝。
http:// stackoverflow。com/questions/14036604/objective-c -nsobject-isequal-vs-comparison –
使用-isEqualToString:方法比較兩個字符串的值。使用C ==操作符將簡單地比較對象的地址。 –