This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Does Objective-C use short-circuit evaluation?
If an object is of a certain type, and a property of that object has a certain value, I want to do something.
Can I use:
if (objectIsOfType:x && object.property == y)
or do I need to nest these? Assume that asking for object.property will through an error if the object is not of type x.
No. Objective C (as C and many other languages) uses short circuit evaluation.
Objective-C supports short-circuit evaluation(from left to right).
but in any way, you need to check object on nil :))
Related
This question already has answers here:
Array declaration in FORTRAN for beginners
(2 answers)
Closed 6 years ago.
I am trying to understand a Fortran90 code. In the code, I found this expression for initializing a variable:
integer :: time(8)
What is meant by this? What does the parenthesis do?
That syntax declares an INTEGER rank one array of size eight.
(In Fortran terminology that source does not initialize anything and it is a declaration, not an expression.)
This question already has answers here:
ObjectiveC: if (obj) {...} AND if (obj != nil) {...}, which is better?
(2 answers)
Closed 9 years ago.
I have seen in several places the use of if(variable != nil), I personally prefer if(variable) because we avoid a comparison operation. Some one can explain me please whats the better approach and most important, why! Thanks.
The compiler will optimize the comparison out anyway, there won't be any differences in the generated code.
It's just a question of style, and possibly readability, really.
if(variable) because we avoid a comparison operation
The compiler will optimize the comparison out anyway
It's a definition of if(variable): In both forms, the first substatement is executed if the expression compares unequal to 0. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf
And nil is defined as 0 pointer.
So the correct way is to say that if (variable) is defined as if (variable!=nil) whenever variable is a pointer.
It's just a question of style,
You can make a big mistake by omitting a first symbol in != or ==, so it's a pretty standard advice to avoid using if(variable==nil) and if(variable!=nil). Although clang should warn you anyway.
In MATLAB, if you type if (a)&&(b), then b isn't tested if a is false. This is really handy for cases where the second condition would throw an error if the first condition isn't true.
In Objective C, this doesn't appear to be the case. So, my question is: are there any similar ways to have ordered conditions in an if statement? Or must the two statements simple be nested? (E.g., if (a){ if(b) {.)
Thanks for reading.
In Objective C, this doesn't appear to be the case.
This is incorrect. C and its derivatives, including C++ and Objective-C, follow the same short-circuiting rules that you're familiar with from Matlab. In an expression of the form:
x && y
y will not be evaluated if x is false.
This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
Caret in objective C
I just want to know what this ^ symbol means in Objective-C.
It can mean several things:
type (^name)(arguments)
is a declaration of a block object.
^(arguments) { ... }
is a block object literal
x ^ y
is the bitwise XOR operator
It is used to define blocks in later versions of iOS. See http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html
It means a couple of things:
It can mean bitwise XOR.
It can also signify a pointer to a block (just like * is marks a pointer to a function).
This question already has answers here:
Closed 12 years ago.
Possible Duplicate:
Is there a difference between YES/No,TRUE/FALSE and true/false in objective-c?
What is the difference between upper boolean and lower boolean? Ex: true and TRUE. Thanks for any answers!
It depends on the language... Some languages only like True or False (Python), some like all lowercase (Java - I think), and some don't care (PHP, Ruby)