__weak typeof(self) weakSelf = self 控制器和block的循环引用问题

__weak typeof(self) weakSelf = self

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

循环引用可能产生的后果

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

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

发布了144 篇原创文章 · 获赞 67 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/baidu_40537062/article/details/105144712
今日推荐