我是Xcode和iOS的新手,今天一直在使用“仪器”工具进行实验。我正在努力解决一些问题:
情景:
我创建了一个简单的应用程序,用UISearchBar过滤UITableView(带有ARC的目标iOS5)。简单的代码,没什么太花哨的。
对于我自己的学习,当我在搜索栏中输入时,我在执行各种操作时正在观看分配。
使用'Allocations'工具工具,我得到以下内容:
正如预期的那样,当我第一次开始在搜索栏中输入内容时,我看到内存突然激增。之后,进一步搜索对分配图没有显着影响。
但是,当我使用“Zombie”乐器工具查看内存分配时,只要我在搜索栏中输入内容,分配图就会继续上升。
起初,我认为这可能是我追踪的内容 - 我试图确保所有设置都匹配。但是,搜索时它仍会显示上升图。
有没有人对此有解释?毫无疑问,我对分配工具在每种仪器模式中的跟踪方式存在一些概念上的误解。
答案 0 :(得分:2)
Zombies工具通过告诉您的应用不来释放对象。相反,当对象被释放时,应用程序会改为分配对象,但会将对象的类更改为一个特殊的僵尸类,它通过引发僵尸错误来处理任何消息。
因此,在Zombie工具下,分配不断增加,因为没有真正解除分配。
顺便说一下,由于使用Zombies会阻止应用程序取消分配对象,因此应用程序通常需要更多内存才能在Zombies工具下运行。这在Mac上(以及在Mac上运行的iOS模拟器中)都可以,因为Mac可能有几千兆字节的RAM并且还支持分页到磁盘。但iOS设备只有256 MB到1 GB的RAM,并且不支持分页。这可能就是为什么Instruments不允许你在iOS设备上使用Zombies。