In ARC, using self on blocks lead to retain cycles (just like delegates if declared strong), so the common solution is to provide a temp "weakSelf" to the block, which prevents the block getting a strong hold of self. Now the answer to your question: in most cases the weakSelf is sufficient, but some worry that this weak reference could be lost while the block executes, so creating a strong pointer to it assures that it will be alive while the block is still executing. And it doesn't create a retain cycle because the strong pointer will disappear when the block finishes. A win-win for everyone.