http://www.itdecent.cn/p/e9a5fe9e2238
上篇 知道delegate 置空 才會執(zhí)行deinit (也可以調(diào)整代理 然后定義代理的時(shí)候weak), 后來我發(fā)現(xiàn)我寫的很多代碼中 置空也沒有效果, 后來發(fā)現(xiàn)是調(diào)用了self 傳給了 里面的view (這個(gè)是看別人的文章學(xué)來的)
~
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)
~
這個(gè)造型 發(fā)現(xiàn) 還是不會去執(zhí)行deinit , 為什么呢? 理論上不持有了啊 , 我又到VideoNewPageOtherView發(fā)現(xiàn)里面還持有了self
~
self.parentVC = parentVC
~
所以我在定義的時(shí)候在加一個(gè)weak
weak var parentVC:UIViewController!
然后所有的這樣傳入的 都weak 弱引用 發(fā)現(xiàn)OK了 deinit 執(zhí)行了,