1

我正在编写一个存在明显泄漏/内存分配问题的 tvOS 应用程序。自 Swift 3 和 tvOS 10 更新以来,我注意到大量内存问题。该应用程序应该连续运行数天/数周,并且使用 Swift 2 和 tvOS 9,它运行良好。现在,我的应用程序运行了 2-3 天并崩溃了。一个多星期以来,我一直在办公桌前敲打我的头。

我已经使用 Instruments 来诊断和解决我的大部分(如果不是全部)泄漏,但我的应用程序中的内存使用量仍然缓慢上升。尽管 Instruments 显示没有泄漏,但 XCode 中的内存使用跟踪器仍然显示内存缓慢而稳定地上升。我一直在使用 Instruments 跟踪分配,并发现了一些奇怪的东西:

1) 当我将 SKCropNode 添加到 SKSpriteNode 时,我的 Persistent bytes 和 # 迅速上升。

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 中遇到过内存问题?

有人对我上面列出的问题有任何解释或解决方案吗?

提前致谢 :)

4

0 回答 0