block不需要__weak的几种情况
1、UIView 的 animation动画块使用了Block,内部使用self不会循环引用,为什么呢
答:UIView 动画块是类方法,不被self持有,所以不会循环引用。
2、Monsary也使用了Block来设置控件的布局,Block内部使用self,为什么不会循环引用呢
答:看源码可以看出,Monsary使用的Block是当做参数传递的,即便block内部持有self,设置布局的view持有block,但是block不持有view,当block执行完后就释放了,self的引用计数-1,所以block也不会持有self,所以不会导致循环引用。
3、reactiveCocoa如果不使用@weakify @strongify,会循环引用,两个宏就等于下边代码:
__weak typeof(self) weakSelf = self;
__strong typeof(weakSelf) strongSelf = weakSelf;