什么!!在Objective-C中表示

时间:2009-11-11 21:50:26

标签: objective-c

我有这段代码:

- (BOOL)isConnected {
    return !!_sessionKey;
}

其中_sessionKey之前被定义为:

NSString* _sessionKey;

代码来自facebook-connect for iphone。

因为我通过查看其他人编写的代码来学习Objective-C。 !!函数中使用的isConnection对我来说似乎没用,或者我错过了什么?它做了什么?

2 个答案:

答案 0 :(得分:17)

!!会将结果转换为YESNO

使用!!x是来自C的成语。这个表达式的结果是:

    !!x == 0 时,
  • x == 0 // x is zero!!x == 1
  • 时,
  • x != 0 // x is non-zero

至少在C中,您可以使用任何非零表达式作为满足if ()或其他条件控制流的条件的值。但是,有时很高兴知道“真值”由1表示而不仅仅是“非零”。

在Objective-C中,YES被定义为1而不是“非零”。因此,在Objective-C中,这个C语言变得更有用。

另一种表达方式:

    !!x == NO 时,
  • x == NO!!x == YES
  • 时,
  • x != NO

答案 1 :(得分:14)

这意味着“不是”。

在这种情况下,第一个!可以解释为“不存在”,所以它意味着(不存在sessionKey)。

这基本上是一个简短的说法

return (_sessionKey != nil).