What does !! mean in Objective-C
I have this code:
- (BOOL)isConnected {
return !!_sessionKey;
}
where _sessionKey is defined earlier as:
NSString* _sessionKey;
the code comes from the facebook-connect for iphone.
Since I am learning Objective-C by looking at code written by other people. The !!
used in the isConnection
function seems 开发者_StackOverflowuseless to me, or am I missing something? What does it do?
The !!
converts the result to either YES
or NO
.
Using !!x
is an idiom from C. The result of this expression is:
!!x == 0
whenx == 0 // x is zero
!!x == 1
whenx != 0 // x is non-zero
At least in C, you can use any non-zero expression as a value which satisfies the condition of an if ()
or other conditional control flow. However, sometimes it is nice to know that the "true value" is represented by 1
rather than merely "non-zero".
In Objective-C, YES
is defined as 1
rather than as "non-zero". Thus, in Objective-C, this C idiom becomes more useful.
Another way of putting it:
!!x == NO
whenx == NO
!!x == YES
whenx != NO
It means "not not".
In this case, the first ! could be interpreted as "doesn't exist", so it means if (not doesn't exist sessionKey).
It's basically a short way to say
return (_sessionKey != nil).
精彩评论