iOS开发技术集合

续上篇deinit 文章

2015-12-17  本文已影响60人  格调main

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 执行了,

上一篇 下一篇

猜你喜欢

热点阅读