1

我在调试一个以可重现的方式崩溃的 iPhone 应用程序时遇到了麻烦。

短篇小说: 一个自定义UIViewController被分配并推送到一个UINavigationController's 堆栈上。一段时间后,UIViewController从堆栈中弹出。下一次将 a 压入UIViewController堆栈会使应用程序崩溃。

任何崩溃的标准程序是使用NSZombie启用的仪器。在检查对象的历史后,发现一些我无法理解的内容:

  • 对象接收 2(两)autorelease条消息,并且
  • NSAutoreleasePool's drain 方法发送 3(三)条释放消息

到目前为止,防止崩溃的唯一方法是不向相关对象发送 1(一个)释放消息,从而引发内存泄漏的危险信号,只是它不会泄漏。

还有其他我忽略的解决方案吗?

更新:正如你们中的一个人指出的那样:

你的代码有问题。与自动释放池排水无关。

事实证明,第一个UIViewController是作为委托传递给的,因此当调用来自导航控制器本身UINavigationController时,我感到很困惑。Zombie

下次在问错问题之前我应该​​更加小心。

4

0 回答 0