__weak与__block

2016-10-17  本文已影响0人  圆木鱼

在使用block进行一些回调的时候,为了防止循环引用,我们常常用这样代码来处理:

__weak typeof(self)weakSelf = self;

但是,在阅读一些优秀的第三方框架的源码的时候,如AFNetworking,有时我们也会遇到这样的写法:

__block typeof(self)weakSelf = self;

这是因为Block可以访问局部变量,但是不能修改,如果修改局部变量,需要加__block.

PS:一般使用__block都是用到基本类型的变量

__strong typeof(self)strongSelf = weakSelf;

偶尔,还会见到,这种写法,多用在block里面
原因:有些回调调用的时候,不希望所引用的对象释放掉,就会用到这种写法,在AFNetworking里面有很多,或者多次使用weakSelf时一般会用__strong再引用一下.

上一篇 下一篇

猜你喜欢

热点阅读