1

我目前在我的目标 c 程序中有很大的内存泄漏,我正在尝试找到它并修复它(显然!)我遇到的问题是我使用 ARC 创建了程序,所以我不能只是制作我自己的发布实现或类似的东西,以查看对象何时或是否被释放。

更糟糕的是,我不确定我是否完全理解分配工具。我发现太多的内存被分配,然后没有被我认为是在单独的线程中创建的可变字符串释放,但我不知道如何解决这个问题!我以为我已经销毁了对包含它的对象的所有引用,但显然不是?

找到泄漏的确切位置的最佳方法是什么?或者,如果有人有修复,修复它?

4

2 回答 2

0

您可以观看名为“学习工具”的 WWDC 2012 会议(会议 409)。视频在这里

于 2012-09-13T15:43:37.893 回答
0

dealloc您可以通过在其实现中记录一条消息来查找对象何时消失。但是,如果它没有被解除分配,那么您一开始就不会到达那里。

你说references to the object that contains it和也separate thread。如果您使用块来编写在单独线程中执行的代码,请注意您可能通过self在块中引用而创建的保留圈。

编辑:

如果您不知道我在说什么,请查看`self` 上的保留循环,其中包含块块、自我、保留循环

于 2012-09-13T15:48:36.303 回答