Objective-C helpers
Blocks
A block of code is an structure with this format:
^ <return_type> <parameters> {<code>}
like:
^BOOL(id str){return [str length] > num;}
^{[local doSomething];}
This structures can be assigned or passed as a parameter or stacked.
Iterations
NSArray* array;
for(id e in array) {...e...}
NSDictionary* dictionary;
for(id k in dictionary){...k...}
[array enumerateObjectsWithOptions:NSEnumerationReverse
usingBlock:^(id e,NSUInteger idx,BOOL* stop){...e...idx}];
[dictionary enumerateKeysAndObjectsUsingBlock:
^(id k,id obj,BOOL* stop){...k...obj;}]
Memory management
When you have two objects that have a reference to each other, use this convention to avoid release locks: Downlinks member instance use retain. Uplinks member instance don’t use retain.
This avoid memory locks like this one: