Good day.
In my "universal" code (for both 10.5 and 10.6 + 10.7), I usually use this structure:
+ (id)some_method { #if NS_BLOCKS_AVAILABLE __block id some_var; /* Операции с блоками */ #else id some_var; /* Аналогичный код, но без блоков */ #endif } That is, in essence, duplicate declarations of all variables. I don’t like this method, because there is a bunch of duplicate code.
Therefore, the question is: what if you initialize variables only once (regardless of whether it supports runtime blocks or not) with the identifier __block? How will systems where blocks are not supported (<10.6, <iOS4.0) react to it? In fact, they should curse at him wildly, but who knows.
PS I would check it myself, but not a single car with 10.5 is at hand.