代理为什么要用weak修饰
在说这个之前,得了解一个知识点, view 的属性和控制器是用ratain修饰的强引用:
只要控制器不死, 这个属性就存在
@property(null_resettable, nonatomic,strong) UIView *view;
或者retain 相当于strong
@property( nonatomic,retain) UIView *view;
那为什么代理要用weak弱引用呢?
拿tableView来说, tableView有个view 里面有个强引用, 他有个代理属性, 一般我们都是设置控制器为代理, 此时要是用强引用的化, 就会造成你拉着我,我拉着你,谁都别想死u循环引用,这是个很大的问题,效果如图:
所以代理要用weak修饰,此时才可以释放对象
这样才可以