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