__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分析