It depends how the cast from a CGFloat to a Bool is implemented. This could depend on Objective-C's implementation or even on the actual processor's implementation of the IEEE floating point spec.
Either way, you should definitely not be relying on that. Especially since floats are not guaranteed to be accurate. You could end up with something incredibly close to 0, but have the if statement fail.
You should explicitly test the float against the value you are looking for like so:
if (floatValue != 0.0f)
{
//we know exactly what will happen
}
In Swift, the compiler wouldn't even let you do something like this because it tries to keep you safe:
if (floatValue)
{
//might happen, might not. who knows
}
In Swift, you may only use if (variable)
syntax if variable
is of type Bool.
The Objective-C compiler won't force you into this behavior, but you should abide by it if you want your code to run predictably and be portable.