0

我是 Xcode 和 iOS 的新手,今天一直在尝试使用 Instruments 工具。有些事情我正在努力解决:

设想:

我创建了一个简单的应用程序,它使用 UISearchBar 过滤 UITableView(目标 iOS5 和 ARC)。简单的代码,没什么花哨的。

为了我自己的学习,我在执行各种操作时一直在观察分配——在这个特定的例子中,当我在搜索栏中输入内容时。

使用“分配”工具工具,我得到以下信息:

在此处输入图像描述

正如预期的那样,当我第一次开始在搜索栏中输入时,我看到分配的内存突然激增。之后,任何进一步的搜索对分配图都没有显着影响。

但是,当我使用“僵尸”工具查看内存分配时,只要我在搜索栏中键入,分配图就会继续上升。

在此处输入图像描述

起初,我认为这可能是我正在跟踪的内容 - 我试图确保所有设置都匹配。但是,它在搜索时仍然显示一个上升图。

有人对此有解释吗?毫无疑问,我对分配工具在每种仪器模式中跟踪的内容存在一些概念上的误解。

4

1 回答 1

2

Zombies 工具通过告诉您的应用程序不要释放对象来工作。相反,当对象将被释放时,应用程序将保留分配的对象,但将对象的类更改为特殊的僵尸类,该类通过引发僵尸错误来处理任何消息。

因此,在 Zombie 工具下,分配不断增加,因为没有任何东西真正被解除分配。

顺便说一句,由于使用 Zombies 会阻止应用程序释放对象,因此应用程序通常需要更多内存才能在 Zombies 工具下运行。这在 Mac 上是可以的(以及在 Mac 上运行的 iOS 模拟器中),因为 Mac 可能有几 GB 的 RAM,并且还支持分页到磁盘。但是 iOS 设备只有 256 MB 到 1 GB 的 RAM,并且不支持分页。这可能就是 Instruments 不允许您在 iOS 设备上使用 Zombies 的原因。

于 2012-08-07T06:40:34.237 回答