常规中,从xib拖出一个控件时,系统会自动生成一段代码,如下:
从这个图片中,可以看到控件的属性都是用的weak,这是为什么呢?
首先,如果把weak修改成strong其实也是可以的,但是会出现一个问题,如果把这个控件 removeFromSuperview后,控件虽然看不见了,但是系统还是会有这个控件的内存,就造成了资源的浪费。
其次,为何用weak后,不会被释放掉呢?其原理如下:
(1)viewController中有一个强引用的view,如下:
(2)view中有个强引用的数组的subviews,如下:
(3)当xib新增一个控件时,会把控件以强引用的方式加入到subviews中;
(4)所以,从xib添加一个控件的属性时,用weak 也不会释放掉,因为有其他的地方强引用这个控件。