一、下面,我们来复习一下weak和strong

1.什么时候用strong和weak
OC对象用strong
连线的UI控件为什么用weak
controller ==》 view ==》 view.subViews ==》imageView 强引用
controller --》 imageView 弱引用
controller --》imageView这个位置换成strong也可以,但是不建议,如果一个对象被多个对象强引用,
这多个对象中有一个对象忘记释放,那么该对象也不能释放

为什么连线的UI控件要用weak呢,我们来看啊,
如果,我把这个控件直接拖上来,我拖上来,其实背后,就意味着很多代码,首先要创建一个Label、把这个Label添加到self.view.subviews上,
self.view.subviews,

self.view,里面有一个方法,叫做addSubview,注意,addSubview,是往这个view里边添加一个子控件,
子控件添加到什么位置了,self.view.subviews,添加到这个里边儿来了,

self:控制器,对这个view,是强引用,
view:对subviews这个属性,是强引用,
我们又把这个控件添加到subviews里边儿来了,所以,subviews,这个属性,对这个控件是强引用,
所以,间接的,self,对你加进来的这个控件儿,是强引用关系,已经有一个强引用关系了,
如果,我们在做连线的时候,

连线的时候,是不是一个weak,这个时候,一个weak啊,为什么它是weak,因为刚才我们分析过了,是不是已经有一个强引用了,如果这块儿,再写成strong,

有问题吗?没有问题,会发生循环引用吗,不会发生循环引用,我们来分析一下啊,这是控制器,

从左往右、依次是:控制器、控制器的视图、控制器视图的subviews属性、
subviews属性,后边是Label,

这块儿,一个强引用、接着一个强引用、


1114

被折叠的 条评论
为什么被折叠?



