我正在编写一个有明显泄漏/内存分配问题的tvOS应用程序。自Swift 3和tvOS 10更新以来,我注意到了大量的内存问题。该应用程序应该持续运行数天/周,使用Swift 2和tvOS 9,它运行正常。现在,我的应用程序运行2-3天并崩溃。我已经在我的办公桌上敲了一个多星期了。
我已经使用Instruments来诊断和解决大部分(如果不是全部)我的泄漏,但我的应用程序中的内存使用量仍然缓慢上升。尽管仪器没有泄漏,但XCode中的内存使用跟踪器仍显示内存缓慢而稳定的上升。我一直在使用仪器跟踪分配,并发现了一些特殊的东西:
1)当我将SKCropNode添加到SKSpriteNode时,我的持久字节和#快速上升。
var cropNode: SKCropNode!
func prepare() {
let node = SKSpriteNode()
node.anchorPoint = self.anchorPoint
node.size = self.frame.size
node.color = UIColor.black
self.cropNode = SKCropNode()
self.cropNode.maskNode = node
self.addChild(self.cropNode)
}
2)当我解雇一个场景时,我已经添加了许多措施来清理所有内容,但同样,持久性字节和#继续上升。我在适当的地方使用弱引用。
func exit() {
let fadeAction = SKAction.fadeAlpha(to: 0.0, duration: 0.35)
self.run(fadeAction, completion: { [weak self] in
self?.removeAllActions()
self?.removeAllChildren()
self?.view?.presentScene(nil)
self?.removeFromParent()
self?.view?.removeFromSuperView()
})
}
我的问题是:
从旧版本更新时,有没有人在Xcode 8,Swift 3或tvOS中遇到内存问题?
有没有人对我上面列出的问题有任何解释或解决方案?
提前致谢:)