缩短问号冒号吗?:Objective-C语法?

时间:2012-10-25 09:08:07

标签: objective-c

Xcode没有给出(想到的)错误的错误:

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

事实证明:

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

的作用与:

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

上述缩短语法是否适用于gcc only?或者它是Objective-C的一部分?

1 个答案:

答案 0 :(得分:17)

它是C:中条件表达式的GNU扩展:

来自here

  

C的GNU扩展允许省略第二个操作数,并使用   隐式地,第一个操作数也是第二个:

a = x ? : y;