NSStringオブジェクトの==比較について

// テスト1
NSString *a = [NSString stringWithString:@"STR"];
NSString *b = [NSString stringWithFormat:@"%@", @"STR"];
NSLog(@"aとbは%@", a == b ? @"同じ" : @"違う");

// テスト2
NSString *a = [NSString stringWithString:@"STR"];
NSString *b = @"STR";
NSLog(@"aとbは%@", a == b ? @"同じ" : @"違う");

テスト1は同じ、テスト2は違う
CFGetRetainCountでリファレンスカウントしてみると、テスト2のbは開放不要になってますね。