我正在尝试使用仪器定位泄漏,但我看到的泄漏与下图中的泄漏类似:

  

泄密

正如您所看到的,没有关于哪行代码正在泄漏的信息。我所有的泄漏,大约20个,就像这样,换句话说,泄漏并没有显示我的代码中的任何一行。

此图片中的泄漏与“_CFAllocatorSystem”相关。 (???)在CoreFoundation上,我还有其他人只是说GSEvent。我不知道是什么产生了这些。

我怎样才能发现?

感谢您的帮助。

有帮助吗?

解决方案

我认为你想在泄漏后运行并选择“Source View”。然后,您需要将源文件拖到仪器窗口中。然后它将显示代码中与调用堆栈一起发生泄漏的行。

一些抛弃我的代码泄漏了一个视图。在仪器中看起来像这样: 替代文字http://img688.imageshack.us/img688/9669/screenshot20091028at131.png

其他提示

Leaks向您展示的是,分配泄漏对象的代码的跟踪(这意味着它被保留但您的应用程序没有留下具有该地址的变量)。它没有告诉你的是对象应该被释放的地方,不会导致泄漏,因为这是不可能知道的(有可能找到当前正在调用的版本,但这可能没那么有用)。 / p>

所以这条跟踪告诉我的是,系统分配的一些内存是由你保留的,然后忘记了引用 - 一个键是“PurpleEvent”。 line,在处理计时器事件或通知的线程中很常见。可能是您收到了通知并保留了一些通知,而不会在以后发布。

如果您知道泄漏发生在什么时候,您应该能够隔离在此期间运行的代码。

请参阅此处,尤其是此引用:

此列表会告知您泄漏对象的类型,大小,地址,甚至是调用堆栈。

然后,您可以通过调用堆栈跟踪泄漏内存的来源。

堆栈跟踪显示您确切的哪条线是罪魁祸首。在你的情况下,显然在main.m中的第14行。不知道你有什么困惑吗?

有罪的是加速度计,我正在编译OS 3.0。

换句话说,苹果公司称泄漏的加速度计已经修复,但仍然像地狱一样泄漏。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top