![]() |
1
183
它是一个内存调试辅助工具。特别是当你设定
当对象达到retain count 0时,通常会被视为“死”对象,这个名称是一个相当明显的作用。有了这个设置,它们就继续存在于一个奇怪的半衰期——既不生存,也不完全死亡。很像真正的僵尸,只不过它们吃的大脑更少。 |
![]() |
2
94
亚当在解释僵尸是什么方面做得很好,但是使用环境变量并不是找到和跟踪僵尸的最佳方法。 一个更好的僵尸检测方法,就是使用仪器-从XCode开始用“Run with Instrument”并选择“Allocations”。 然后在开始后立即停止录制,按Allocations工具上的“i”按钮,并打开“启用引用计数”和“启用NSZombie检测”。现在再次点击仪器中的“录制”,您的应用程序将启动-如果任何僵尸对象被发送,则录制将停止,录制时间线中将弹出一个对话框-您可以单击该对话框查找对象被保留或释放的每个位置。 编辑:之前的建议是针对XCode 3,下面是对XCode 4的补充: 在XCode 4.2中 ,还有一种更容易利用僵尸检测的机制——僵尸仪器。使用“配置文件”而不是“运行”来启动应用程序,将出现一个仪器选择器。选择“僵尸”,应用程序将开始运行-做任何导致你的崩溃,一个对话框将弹出说“僵尸消息”。 从那里,单击对话框中的小箭头。这将得到僵尸对象被创建、保留或释放的所有时间的列表。拉起侧栏,可以转到每个条目,查看负责retain count中每个调整的代码的堆栈跟踪。 |
![]() |
3
31
我同意Kendall所说的,这非常有用,但我建议您还是使用环境变量,这样您就不会忘记它们已经启用。类似于Cocoa Dev上的(现在已经过期)链接,我把它放在这里是为了不错过它:
它很好地吸引了我的注意。 |