【发布时间】:2014-04-14 21:57:52
【问题描述】:
我有一个在 Xcode 5 中创建的 Sprite Kit 游戏,在使用 Instruments 分析它的泄漏时,我发现确实存在一些泄漏:
问题是我不知道这是来自我的应用程序中的哪个位置,因为“责任框架”列没有指向我应用程序中的任何地方。
如何调试/跟踪此问题的根源?
更新 #1
只有一个文件与 CGPath 进行交互,但我正在调用 CGPathRelease
...
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, size.width, 0);
CGPathAddLineToPoint(path, NULL, size.width, (upperCount * size.width));
CGPathAddLineToPoint(path, NULL, 0, (upperCount * size.width));
CGPathCloseSubpath(path);
upper.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];
CGPathRelease(path);
...
更新 #2
在 Instruments 中打开右侧面板后,我能够看到违规行(尽管我仍然不确定这里是否错了):
第一组泄漏...
第二组泄露...
【问题讨论】:
-
如果我没记错的话,CGPaths & Co 是“旧的”和新的 CGRelease。
-
使用静态分析器找到它们
-
@Fogmeister 我在 Xcode 中运行了静态分析器,但它返回没有问题
-
@Larme 我不确定你的意思。我用我正在使用路径的地方更新了我的问题,但我认为我正确地发布了它。这不是我想要的还是我做错了?
-
使用 CGPathRelease,它似乎是正确的。我只是假设对于所有 ARC 的东西,您可能已经忘记手动执行此版本。您是否使用 Memory Leak Instrument 知道它从哪条线路泄漏?在右侧显示面板并双击泄漏。
标签: ios ios7 memory-leaks instruments sprite-kit