2016-04-28 55 views
1

我在XCode7.3中使用SpriteKit & GameCentre制作Swift 2.2应用程序。快速无限内存增长

我的问题是应用程序使用的内存在不断增加(每秒约增加20MB)。最终这会导致应用程序因内存问题而崩溃。我在设备(iPhone 6s)&模拟器上得到类似的结果。

我已经在运行它通过仪器(截图下面)去了,这似乎显示的问题。

Instruments screenshot

从挖掘到仪器输出,它似乎显示出内存泄漏发生断460 KIB malloc调用。我没有设法从堆栈跟踪中找出造成这种情况的原因。

仪器输出可用 - 不确定如何附加在这里。任何建议/指针从哪里开始?

+0

对于这种规模的错误,有你正在做的事情错在根本上一个不错的选择。你在代码中使用了'malloc'吗?你是否在需要它们的地方使用弱引用? – Holly

+0

代码全是swift2 - 所以没有直接使用malloc调用。如果我正确地读取仪器输出,实际的泄漏将发生在重复的malloc调用之外。 – samius

回答

0

尝试二进制搜索您的代码。评论一半你的电话。仍然有内存泄漏?好的,现在您已将搜索范围缩小了一半。评论剩下的一半。没有内存泄漏?太棒了,你只是将你的问题缩小到你的代码的四分之一。一旦你开始得到导致泄漏的特定代码,你将从StackOverflow中获得更多有用的答案。

+0

对原始问题的模糊性抱歉 - 不幸的是我基本上被卡住了。我一直在浏览我的代码并添加print语句来检查每个方法调用何时发生,我也一直在评论大量的代码。我现在已经把所有的东西都还原到了最低限度(我正在删除代码),内存泄漏只会加速(而不是大约20M的跳转,现在内存现在跳跃了大约50M) – samius

0

已找到答案 - 原因是Apple/Spritekit代码中的错误。

作为设置场景的一部分,我将SKView的showFields设置为true。一旦我禁用了这个(false),内存泄漏问题就会消失。

,从寻找这一点,我发现 - https://forums.developer.apple.com/thread/27870