24

Xcodeは私の(考えられている)タイプミスのエラーを出しません:

 NSString *theme = [[NSUserDefaults standardUserDefaults] objectForKey:@"theme"];
 NSLog(@"Theme: %@", theme ?: @"Default");

それが判明:

 NSLog(@"Theme: %@", theme ?: @"Default");

と同じように機能します:

 NSLog(@"Theme: %@", theme ? theme : @"Default");

上記の短縮構文はgccにのみ有効ですか?それともObjective-Cの一部ですか?

4

1 に答える 1

20

これは、Cの条件式に対するGNU拡張です。

ここから:

CへのGNU拡張により、第2オペランドを省略し、第1オペランドを第2オペランドとして暗黙的に使用することもできます。

a = x ? : y;
于 2012-10-25T09:13:50.590 に答える