block会持有外部变量,不会持有局部变量。嵌套block中的第一层block的局部变量对于内部block来说就是外部变量。

所以下面例子这哪个blockB中用self的话还需要再strongify一次,否则blockB还是会持有blockA中的局部变量self,还是会造成循环引用。

@weakify(self);

self.blockA = ^{

   @strongify(self);

    self.blockB = ^{

        @strongify(self);

        [self doSomething];

    }

}

posted on 2020-09-19 15:49  ximenchuixie  阅读(142)  评论(0编辑  收藏  举报