August 2011
Intermediate to advanced
552 pages
23h 48m
English
Interestingly enough, blocks are also objects and can be stored in collections. Blocks start out life on the call stack, making them the only stack-based Objective-C objects. The block’s executable code does not actually live on the stack, but all of the data the block uses, such as local variables and captured variables, lives there.
Because these blocks live on the stack, you need to make a copy of the block into the heap if it is to live beyond the current scope. When you copy a block, any captured variables are copied into the heap as well. Figure 3.1 shows the block data on the stack for this block:
int stride = 10; __block int summation = 0; BoringBlock blockPtr ...
Read now
Unlock full access