gpt4 book ai didi

swift - 每次呈现新场景时,SpriteKit 内存都会增加

转载 作者:行者123 更新时间:2023-11-28 14:00:37 34 4
gpt4 key购买 nike

我正在尝试解决一个问题,即每次我在关闭场景及其 View Controller 后重新打开场景时,SpriteKit 都会导致内存泄漏。这是每次打开的上升趋势: spritekit memory leak

当我检查仪器时,问题似乎与 SKTileMapNode“SKCTileMapNode::_ensureChunkForTileIndex(unsigned int)”有关,但我在 willMove 上使用此代码(来自 View :SKView):

 for child in children {
if child.isKind(of: SKTileMapNode.self) {
(child as! SKTileMapNode).fill(with: nil)
print("Wiped tiles for tilemaps")
child.removeAllActions()
child.removeFromParent()
} else if child.isKind(of: SKSpriteNode.self) {
(child as! SKSpriteNode).texture = nil
child.removeAllActions()
child.removeFromParent()
print("Wiped SKSpriteKitNodes")
} else {
print("Other child removed")
child.removeAllActions()
child.removeFromParent()
}

}

从上图可以看出,结果仍然是内存使用量上升。还在使用仪器中的 SKTileMapNode 吗?

最佳答案

我尝试检查事情是否还没有被释放,但这并没有解决问题。我使用了开发人员技术支持票,一位工程师建议我关闭项目方案中的“GPU Frame Capture”。

这 95% 解决了问题。内存使用量已减少到更合理的数量,并且在我实现合理的方法来释放场景、节点等后,应用程序不再继续增加内存使用量...

我问这个解决方案是否仅用于在 Xcode 中进行测试,我被告知不是,这就是我的应用程序在 App Store 上的表现:

“GPU Frame Capture 是一种调试工具,仅在附加 Xcode 调试器的情况下运行您的应用程序时才会出现!” - 工程师说。

关于swift - 每次呈现新场景时,SpriteKit 内存都会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53590079/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com