block的循环引用(weak-strong dance)

__weak typeof(self) weakSelf = self

typeof(self) 是获取到self的类型,这样定义出的weakSelf就是和self一个类型的, 加上__weak是建立一个若引用,整句就是给self定义了一个若引用性质的替身;
这个一般用在使用block时会用到,因为block会copy它内部的变量,可能会造成引用循环,使用__weak性质的self替代self,可以切断block对self的引用,避免循环引用
在这里插入图片描述

xcode7.3以后,两个weakSelf都能打印出来

在这里插入图片描述

循环引用可能产生的后果

1.导致控制器无法释放,而多次创建
2.如果你那个控制器用到了通知,控制器释放不掉的话,通知也无法释放, 你每次进控制器就会添加一次通知, 会导致通知发送多次

参考博客:
__weak typeof(self) weakSelf = self
Objective-C中block的循环引用问题
__weak typeof(self) wself = self分析

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页