续上篇deinit 文章

作者: 格调main | 来源:发表于2015-12-17 11:44 被阅读60次

    http://www.jianshu.com/p/e9a5fe9e2238
    上篇 知道delegate 置空 才会执行deinit (也可以调整代理 然后定义代理的时候weak), 后来我发现我写的很多代码中 置空也没有效果, 后来发现是调用了self 传给了 里面的view (这个是看别人的文章学来的)

    ~

         otherView = VideoNewPageOtherView(frame:frame_2 , parentVC: self, videoId: self.videoId)
        otherView.delegate = self
        self.view.addSubview(otherView)
    

    ~
    然后悲剧了 没法释放了 我就想那用weak 呢 oc 不是有吗 所以尝试了下.

    ~

        weak var weakSelf = self
         otherView = VideoNewPageOtherView(frame:frame_2 , parentVC: weakSelf!, videoId: self.videoId)
        otherView.delegate = self
        self.view.addSubview(otherView)
    

    ~
    这个造型 发现 还是不会去执行deinit , 为什么呢? 理论上不持有了啊 , 我又到VideoNewPageOtherView发现里面还持有了self
    ~

    self.parentVC = parentVC
    ~

    所以我在定义的时候在加一个weak

    weak var parentVC:UIViewController!

    然后所有的这样传入的 都weak 弱引用 发现OK了 deinit 执行了,

    相关文章

      网友评论

      本文标题:续上篇deinit 文章

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