繁体   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