Does Objective-C use short-circuit evaluation?

objective-c, short-circuiting

Solution

Objective-C does support short-circuit evaluation, just like C.

It seems that in your example `myString` is `NSNull` and not `nil`, therefore `myString != nil` is true.

NSNull is a singleton and is used to represent `nil` where only objects are allowed, for example in an NSArray.

Btw, normally, people write `if (!myString && myString.length == 0)`. Comparing to `nil` is quite ugly. Also, I'd compare the length to 0. That seems to be more clear.

Problem

I tried something along the lines of: ``` if(myString != nil && myString.length) { ... } ``` And got: -[NSNull length]: unrecognized selector sent to instance Does Objective-C not short-circuit after the first condition fails?

Original source