8.block中使用self的循环引用问题

来源:互联网 发布:代理服务器软件下载 编辑:程序博客网 时间:2024/05/30 04:07

      在视图控制器中的一段block中使用self时,例如赋给delegate等,这种情况会造成循环引用,这样该视图控制器无法得到释放。解决方法是在block中声明self为弱引用,以下是两种声明为弱引用的方法:

__unsafe_unretained NJShareViewController *unsafeSelf = self;        __weak NJShareViewController *unsafeSelf = self;//    __weak 当对象释放之后会自动设置为nil, 而__unsafe_unretained不会

      还有一种声明方法,可以动态检查self的类型进行声明,比较通用:

    __weak typeof(self) unsafeSelf = self;//    typeof(int) a = 10; // == int a = 10;

      通过以上几种方法就可以解决block中循环引用问题,从而避免对象无法得到释放。

0 0