美文网首页
iOS日记10-IBOutlet属性用weak还是strong

iOS日记10-IBOutlet属性用weak还是strong

作者: Mcyboy007 | 来源:发表于2017-03-10 10:23 被阅读0次

    参考:
    1)http://ibloodline.com/articles/2016/04/01/uiview-weak-strong.html
    2)http://www.jianshu.com/p/5b8e1eafed39

    1.知识点

    如果IBOutlet对象是nib/storyboard scene的拥有者(File’s owner)所直接持有的对象,那么很显然拥有者必须直接拥有对象的指针,因此属性应设置为strong。而其他的IBOutlet对象的属性需要设置为weak,因为拥有者并不需要直接拥有它们的指针。控制器需要直接控制某一个子视图并且将子视图添加到其他的view tree上去,此时需要strong。

    2.问答

    1.IBOutlet属性是Weak还是Strong?

    1)我们将控件subview拖到xib/storyboard的view上,view持有了subview(强引用)。
    2)当我们使用IBOutlet属性控件的时候,我们是在viewController里面使用,而这个IBOutlet属性控件并不一定直接归控制器所有。当他属于VC的时候,我们要用Strong修饰符;当他属于View时,我们要用Weak修饰(避免View和VC同时拥有控件的强引用)。
    即使使用Strong,也不会出现循环引用。在一般场景下,也不会发生内存泄露。VC释放的时候,view也会被释放,它们2个持有的subView也会被释放。但是,涉及到多层View的场景时,这么做是非常容易引起bug的。所以,请根据实际场景,确认IBOutlet属性的修饰符。

    2.控件和IBOutlet的对应关系是?

    1)一个控件可以对应多个IBOutlet,所以他也可以对应多个Action事件
    场景:一个基类的xib中有一个通用性的控件,所有的子类中都有一个IBOutlet连接到该控件
    2)一个IBOutlet只能对应一个控件

    相关文章

      网友评论

          本文标题:iOS日记10-IBOutlet属性用weak还是strong

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