When a block that refers to a variable __blockis copied, the variable is moved to the heap. This means that all the code that refers to it must come by indirect means, mainly a pointer, so that when it moves from the stack to the heap, these links can switch along with it.
This is documented here .
source
share