我在释放对象时出现了一个奇怪的问题。在对象的dealloc
方法中,我正在释放另一个(子)对象。当这个子对象被释放时,我得到一个 EXC_BAD_ACCESS 错误。在我调用 release 之前,我很确定子对象是一个有效的指针。
这就是我确认奇怪之处的方式——我在 dealloc 方法中设置了一个断点,就在释放子对象之前,它被分配了!我可以向它发送消息,它会正确响应。另一个奇怪的错误是,如果 NSZombieEnabled 设置为 YES,我根本不会收到错误,甚至 NSZombie 的常见错误,即我已向已释放对象发送消息,代码运行正常。
有谁知道如何解决这个问题?
提前致谢!
* 编辑 1 *
我发现如果我将 [super dealloc] 放在 dealloc 的末尾,它会崩溃,但如果我将它放在 start 时,它不会。我以前也遇到过类似的情况,只是相反——如果我在我的 dealloc 开始时 [super dealloc] 应用程序会崩溃,而最后却没有。
为什么它会有所作为,什么时候应该使用什么?
* 编辑 2 *
从头开始编辑#1!这两种方式都行不通。