什么是"?" 在下面的陈述中表示

5lb*_*ass 2 iphone objective-c

原谅我的"新手"问题,但问题是什么,"?" 在fololowing代码行中意味着什么?

self.navigationItem.leftBarButtonItem.title = (editing) ?
    NSLocalizedString(@"Done", @"Done") : NSLocalizedString(@"Edit", @"Edit");
Run Code Online (Sandbox Code Playgroud)

Rud*_*ser 12

这是一个三元语句,?是条件运算符.该声明基本上是这样说的:

if (editing) {
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
} else {
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
}
Run Code Online (Sandbox Code Playgroud)

你可以这样想:

? - 如果之前的陈述为真,请立即执行代码.

: - 否则/否则,在此之后立即运行代码.

您可以在http://en.wikipedia.org/wiki/Ternary_operation阅读更多内容.您会发现此构造可用于除C/Objective-C之外的许多语言.