Block recursion and breaking retain cycle
问题 To better illustrate the question, consider the following simplified form of block recursion: __block void (^next)(int) = ^(int index) { if (index == 3) { return; } int i = index; next(++i); }; next(0); XCode (ARC-enabled) warns that " Capturing 'next' strongly in this block is likely to lead to a retain cycle ". Agreed. Question 1 : Would the retain cycle be successfully broken by setting the block itself to nil , in this fashion: __block void (^next)(int) = ^(int index) { if (index == 3) {