1

对我来说这是一个奇怪的情况,我无法在设备或模拟器上运行我的项目,但是当我选择配置文件而不是运行选项时,应用程序运行完美,没有任何僵尸家伙。

它发生在我将项目转换为 ARC 之后。我只是按照 Xcode 告诉我的方式修改代码,并且由于这个项目的大小,我无法查看每一行代码。

附言。我是这个应用程序的第三手,所以我几乎不可能理解 10k 行代码。

4

2 回答 2

2

您是否尝试过在 Xcode 本身中启用 Zombies 而不进行分析?这会将对象设置为从不释放,这样当您向保留计数为零的对象发送消息时,它将知道该对象是什么并告诉您。只要确保再次打开它,对象就会正常释放。

在这里查看如何做到这一点: 如何在 Xcode 中启用 NSZombie?

于 2012-09-06T22:00:28.197 回答
0

以下内容可以在事后为您提供帮助,但最好在 IMO迁移之前执行它们;如果存在问题,ARC 将解决一些问题,同时从您那里抽象出其他问题:

1)创建更多自动释放池一种可以帮助您缩小范围的方法是显式创建自动释放池——这可以帮助本地化您的应用程序的一些内存相关问题。显式添加自动释放池还有其他好处,因此这不仅可以用于寻找错误。

2)也使用 GuardMalloc,还有其他与内存相关的工具——您的应用程序也应该在启用 GuardMalloc 的情况下运行良好。切换到 ARC 可能会改变破坏点——你可能会抓住一个悬空的指针。

3)最后删除所有泄漏,这可能听起来倒退 - 删除所有可能的泄漏。您希望明确定义内存操作和生命周期。如果您偶尔有泄漏,您的问题可能很难被发现。通常,减少泄漏可以通过使问题更容易重现来帮助您隔离问题。

于 2012-09-06T22:04:42.730 回答