.showsPhysics的内存泄漏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.showsPhysics的内存泄漏相关的知识,希望对你有一定的参考价值。

我刚刚花了最近5个小时试图在我的Spritekit App中调试内存泄漏。

应用程序启动后,我注意到我的内存使用率略有上升。

我花了5个小时中的3个时间通过参考资料挖掘,用ARC学习强VS弱(绝对推荐阅读像我这样的中间体)

还有其他人遇到过这个问题吗?如果有的话有什么解释吗?这是我的GameViewController的一小部分:

class GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = MainMenu(fileNamed:"MainMenu") {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true
        skView.multipleTouchEnabled = true
        skView.showsPhysics = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .Fill

        //var GameSaveData = GameData()

        // Scene Config
        //scene.Landscape = "Test_Landscape"
        //scene.Area = "Start"

        skView.presentScene(scene)
    }else{

        print("Couldn't Load Game Scene")
    }
}

正如你所看到的,我在这里并没有做任何与众不同的事情。我会发布我的gamecene代码,但在我仍在观察内存泄漏的时候,它都被注释掉了。

答案

最后,出于沮丧,我刚开始评论代码行,然后构建和分析,直到内存泄漏得到解决。

原来我的GameViewController.swift文件,

skView.showsPhysics = true

是罪魁祸首。这肯定是一个新的错误,因为我在<ios 9.2中没有看到这个问题

另一答案
skView.showsFPS = true
skView.showsNodeCount = true
skView.showsPhysics = true

泄漏内存至少0.3 MB / s。

此外...

skView.showsFields = true

enter image description here

以30-40 MB / s的速率泄漏内存。坏苹果!

以上是关于.showsPhysics的内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

避免android片段中内存泄漏的最佳方法是啥

FragmentStatePagerAdapter 内存泄漏(带有 viewpager 的嵌套片段)

带有 UI 和内存泄漏的保留片段

在片段中保存活动实例:是否会导致内存泄漏?

使用导致内存泄漏的音频片段

片段 - 全局视图变量与本地和内部类侦听器和内存泄漏