簡體   English   中英

CADisplayLink因為remove(from:forMode :)而不是取消分配視圖控制器

[英]CADisplayLink because of remove(from:forMode:) not deallocating view controller

我面臨一個奇怪的問題。

所以我創建了實例並分配如下

var displayLink:CADisplayLink?

private func setupDisplayLink () {

    self.displayLink = CADisplayLink(target: self, selector: #selector(displayLinkDidFire(link:)))
    self.displayLink?.preferredFramesPerSecond = 30
    self.displayLink?.add(to: .main, forMode: .common)
}

現在刪除我從此答案中顯示的鏈接

self.displayLink?.remove(from: .main, forMode: .common) // comment this line and view controller correctly deallocated 
self.displayLink?.invalidate()

因為行self.displayLink?.remove(from: .main, forMode: .common)我的deinit方法沒有調用視圖控制器

在內存圖中,我無法識別真正的問題。 我很幸運,我試圖評論該線,它的工作原理

在此輸入圖像描述

為什么這樣?

像這樣停止displayLink:

displayLink?.invalidate()
displayLink = nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM