Xcode 默认不会监控僵尸对象,这里我们配置开启他,然后就可以看到具体的跟踪信息了:
也可以通过选择「Product」下的「Profile」来打开「Instruments」工具集。然后选择「Zombies」,再单击右下角的「Choose」按钮进入检测界面,这时点击左上角的「Record」红色圆点按钮开始检测。
1.1 上面例子,为什么最后一次通过 retainCount 获取的值为1,而不是为0呢?
因为该对象的内存已经被回收,我们向一个被回收的对象发送 retainCount 消息,他的输出结果是不确定的,如果该对象所占内存被复用了,那么就可能造成程序异常崩溃。
而且当最后一次执行 release 时,系统已经知道马上要回收内存了,就没必要再将 retainCount 减1,因为不管减不减1,该对象都会被回收,回收后他所在内存区域(包括 retainCount 值)就没有意义了。不将retainCount 减1变为0,可以减少一次内存操作,加快对象的回收。















