我有这个代码:
- (BOOL)isConnected {
return !!_sessionKey;
}
Run Code Online (Sandbox Code Playgroud)
其中_sessionKey在前面定义为:
NSString* _sessionKey;
Run Code Online (Sandbox Code Playgroud)
代码来自facebook-connect for iphone.
因为我通过查看其他人编写的代码来学习Objective-C.该!!在使用isConnection我的功能似乎没用,还是我失去了一些东西?它有什么作用?
Hea*_*utt 17
该!!结果要么转换YES或NO.
使用!!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 != NOBen*_*Cox 14
这意味着"不是".
在这种情况下,第一个!可以解释为"不存在",所以它意味着(不存在sessionKey).
这基本上是一个简短的说法
return (_sessionKey != nil).
Run Code Online (Sandbox Code Playgroud)