美文网首页
removeFromSuperview

removeFromSuperview

作者: 一代骄马 | 来源:发表于2017-09-23 22:46 被阅读175次

    Unlinks the receiver from its superview and its window, and removes it from the responder chain.

    把当前View从它的父View和窗口中移除,同时也把它从响应事件操作的响应者链中移除

    removeFromSuperview就是一个视图节点删除的操作,执行这个方法,就等于在树形结构中找到该节点,从树型数据结构中删除该节点及其子节点,而并非只是删除该节点自己。同时,另一个操作就是把该对象从响应者链中移除。

    执行removeFromSuperview方法后,会从父视图中移除,并且将Superview对视图的强引用删除,此时如果没有其他地方再对视图进行强引用,则会从内存中移除。如果还存在其他强引用,视图只是不在屏幕中显示,并没有将该视图从内存中移除。所以如果需要使用该视图,不需要再次创建,而是直接addSubview就可以了

    UI控件是使用weak 还是strong 1、在是用storyboard/xib创建的时候,默认视图对齐有强引用,会形成一下强引用UIViewController—>UIView —>subview——>UIButton  只要有subview,就会添加强引用,所以用此方法创建控件的时候,一般是是用weak2、是用weak-property创建的控件,在没有addsubview的时候,在当前作用域以外,会被销毁,而strong-property的不会3、addsubview以后,会为其添加强引用,所以在作用域以外,两个都不会被销毁

    4、但是在removeFromSuperView之后,再此作用域之后,weak--property创建的控件被销毁,而strong--property创建的控件没有被销毁(因为removeFromSuperView移除了superview的强引用,但是当前控制器的强引用还在,所以控件不会被销毁)

    相关文章

      网友评论

          本文标题:removeFromSuperview

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