美文网首页iOS UI
手动创建控件用 weak 还是用 strong?

手动创建控件用 weak 还是用 strong?

作者: mxionlly | 来源:发表于2018-07-30 10:13 被阅读0次

    1、同时声明一个srong和weak的UIButton

    声明

    2、那我们来看一下各自的引用计数,ARC利用KVC获取;初始化后的引用计数

    初始化 retainCount

    3、下面我们将控件removeFromSuperview

    removeFromSuperview 输出结果

    4、利用touches事件打印button和button1,可以看出来strong修饰的button仍然占有内存,weak修饰的button1的内存被销毁,避免了僵尸指针出现。

    输出结果

    其实不管声明的属性是强引用还是弱引用,在控制器消失的时候,这个属性消失,View消失,subViews消失,控件也就消失了。

    当控件的父view销毁时,如果你还想继续拥有这个控件,就用srtong;如果想保证控件和父view拥有相同的生命周期,就用weak。当然在大多数情况下用两个都是可以的,所以并没有说用weak就一定是对的,strong是错的,还是需要根据实际的业务情况来定!

    另外注意一原则:UIViewController下的view,由于viewcontroller直接拥有该view,那就应该选择strong。而如果控件是viewcontroller中view的子视图,对于这个子视图,它的所有者是它的父视图,代码中只是想引用一下这个子视图的指针而已,那么就应该选择weak。

    相关文章

      网友评论

        本文标题:手动创建控件用 weak 还是用 strong?

        本文链接:https://www.haomeiwen.com/subject/ekjxvftx.html