一.代理为什么要用weak修饰

代理为什么要用weak修饰

在说这个之前,得了解一个知识点, view 的属性和控制器是用ratain修饰的强引用:
只要控制器不死, 这个属性就存在

@property(null_resettable, nonatomic,strong) UIView *view;
或者retain  相当于strong
@property( nonatomic,retain) UIView *view;

那为什么代理要用weak弱引用呢?

拿tableView来说, tableView有个view 里面有个强引用, 他有个代理属性, 一般我们都是设置控制器为代理, 此时要是用强引用的化, 就会造成你拉着我,我拉着你,谁都别想死u循环引用,这是个很大的问题,效果如图:

一.代理为什么要用weak修饰_第1张图片
屏幕快照 2016-08-07 下午7.46.55.png
所以代理要用weak修饰,此时才可以释放对象
一.代理为什么要用weak修饰_第2张图片
屏幕快照 2016-08-07 下午7.48.39.png

这样才可以

你可能感兴趣的:(一.代理为什么要用weak修饰)