Fixing retain cycle issues with blocks and self