我正在UIViewController的子类中实现didReceiveMemoryWarning。我的代码如下所示:
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
[self cleanUp];
}
当我的应用程序实际收到内存警告时,应用程序在[self cleanUp]
行(确实存在的方法)上发生了EXC_BAD_ACCESS崩溃。怎么会发生这种情况?据我所知,该框架称为didReceiveMemoryWarning
方法,然后在尝试执行[self cleanUp]
之前释放了我的类。为什么会这样?我该如何防止这种情况?
答案 0 :(得分:1)
你在视图控制器中做了什么异常的事吗?崩溃发生时self
的价值是多少?它是在调试(优化关闭)和发布版本中发生的吗?
尝试使用NSZombieEnabled运行。如果这是保持/释放不平衡的问题,那么应该可以帮助您找到它。
答案 1 :(得分:1)
崩溃实际上发生在-(void)cleanUp
方法中,尽管Xcode指向名为 [self cleanUp]
的行。在-(void)cleanUp
内部,代码访问了已经发布的数组中的元素,因此访问了EXC_BAD_ACCESS。感谢大家的有用建议。
答案 2 :(得分:0)
狂野猜测:首先调用[self cleanup],然后调用super。 如果有帮助,您还可以在SIM卡中模拟内存警告。