Sometimes, you want a block to be able to call itself. That means it needs a reference to itself. And that means you have a wonderful opportunity to create a strong reference cycle that will endure till the end of time, or at least till your app exits. The Solution __weak __block block_t recurse; block_t block; recurse = block = ^(id val) { … recurse(subval); … } Getting There The prototypical rec