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 执行了,
网友评论