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 扩展允许省略第二个操作数,并隐式使用第一个操作数作为第二个操作数:

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