关于block中使用weakSelf和strongSelf的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于block中使用weakSelf和strongSelf的问题相关的知识,希望对你有一定的参考价值。

有时候我们会碰到这种情况,

__weak typeof(self) weakSelf = self;

[obj block:^(){

  __strong typeof(weakSelf)strongSelf = weakSelf;

}];

我们都知道第一句是为了解决block的循环引用问题,那么在block中的语句是干什么用的呢?

 

网上查阅资料知道:

在block中调用self会引起循环引用,但是在block中需要对weakSelf进行 strong,保证代码在执行到block中,self不会被释放,当block执行完后, 会自动释放该strongSelf;

因为仅仅使用__weak去修饰变量,当别处把变量释放后,block中该变量也会被释放掉。

以上是关于关于block中使用weakSelf和strongSelf的问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 面试题:为什么 weakSelf 需要配合 strong self 使用 --转自唐巧

什么时候在block中不需要使用weakSelf

循环引用 && weak strong

block 中使用 weakSelf

iOSself与block的使用规范

深入研究Block用weakSelfstrongSelf@weakify@strongify解决循环引用(上)