swift - 重播时如何从内存中删除级别 1?

标签 swift scenekit

我正在使用具有不同级别的 scenekit 编写游戏,这些级别是不同的文件(uiviewcontrollers)(level1.swift,level2.swift ...)完成一个级别后,您可以重播它。我注意到,当您开始游戏时,它会使用大约 33 MB 的内存。现在,当您再次按下显示 1 级 View Controller 的重播按钮时,游戏会使用大约 60 MB 的内存。

所以问题是,当我再次呈现时,有没有办法以某种方式删除级别 1?就像是: 1级。从内存中删除 Self.presentViewController(level1)?

最佳答案

这些听起来像是内存泄漏的症状。您可以通过保留对场景 Assets 的多个强引用来导致这种情况。您也可以通过编写一个保留循环来导致它:场景的各个部分相互之间保持强引用,因此即使您释放场景,它也不能让自己被释放。

使用 Leaks Instrument 运行您的游戏。有关 Instruments 的 WWDC 视频很有帮助。 Xcode 8 中的 Memory Graph Debugger 将为您提供大量帮助。

关于swift - 重播时如何从内存中删除级别 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424691/

相关文章:

iOS:当响应者辞职时,文本从子类 UITextfield 中消失

swift - 使用 Swift 并发和观察框架 iOS 17 监听搜索栏随时间变化的值

swift - 长按时向前 move SCNNode

ios - ARSCNView 上的 SCNTechnique 不影响 iOS 13 上的 CameraFeed(场景背景)

ios - 在 Scene Kit View 中创建转换小部件

ios - 如何自动缩放不同分辨率的场景?

swift - 如何裁剪和翻转 CVPixelBuffer 并返回 CVPixelBuffer?

ios - 集成 PayU Money Gateway iOS Swift

ios - 快速获取错误 : "Missing Argument for Parameter ‘frame’ in call"的核心图

ios - SceneKit 相机节点在捏手势时重置