【Objective-C】オブジェクトの値を比較する時の注意
演算子==は変数が一致しているかどうかを判定する。
ポインタ変数の場合は、参照先ポインタの値を比較してしまう為、中身が一致していてもNOが返る。
オブジェクトの中身で比較する場合は、NSObject.isEqualを用いる。
NSString *a = [NSString stringWithString:@"AAA"]; NSString *b = [NSString stringWithFormat:@"%@", @"AAA"]; if (a == b) { NSLog(@"a==bで調べると aとbは同じ"); } else { NSLog(@"a==bで調べると aとbは違う"); } if ([a isEqual:b]) { NSLog(@"[a isEqual:b]で調べると aとbは同じ"); } else { NSLog(@"[a isEqual:b]で調べると aとbは違う"); }
コンソール出力
a==bで調べると aとbは違う [a isEqual:b]で調べると aとbは同じ