[英]UITableView crash in iOS 8 on heightForHeaderInSection
[英]iOS UITableView random crash
我有一个我找不到清楚的问题,也许您可以帮助我...
我有一个基于UINavigationController的iPad项目,其中的大多数(但不是全部)控制器都是UITableViewController的实例,并且一切正常。
除了我的应用程序随机崩溃之外,所有东西有时都会崩溃,有时是在使用10分钟之后,有时只是在10秒之后……它永远不会在同一视图上崩溃,也不会在同一时间崩溃,从而难以复制。
此外,它仅在设备上发生,我从未在模拟器中发生此崩溃。
调试器对我没有太大帮助,它说的是: -[UITableView autorelease]:发送到已释放实例0x8e9800的消息
这是调用堆栈: http : //i.stack.imgur.com/JSCHx.png
任何想法 ? 谢谢(对不起我的英语)
您在代码中的某个地方过度释放了UITableView。 您是在其中一个UITableViewController内的UITableView上调用release
还是autorelease
release
? 您只应释放“拥有”的对象。 你自己使用的方法与开头的对象alloc
, new
, copy
,或retain
。
请阅读可可记忆管理指南以获取更多信息。
有用的链接:
在某个时候,您要么释放一个您不拥有的UITableView实例,要么在retain
对它的引用的某个时刻无法retain
它(例如,将其存储在ivar或声明为assign的属性中而不是保留)。
我在博客上写了关于如何调试这样的事情的文章:
http://loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html
基本上,首先尝试这三件事:
很抱歉,重新阅读所有源代码后,我在ViewDidUnload中找到了一个ViewController(我有20个左右的ViewController),并在其中发布了一个Outlet。
它随机崩溃的原因是我不太了解ViewDidUnload的机制,在内存不足且视图不可见时调用它来释放视图(但不是控制器的对象)(例如:NavigationController的First ViewController) ,然后在ViewController再次变得可见时重新加载视图。
在模拟器中,内存很少成为问题,因此几乎从未调用过ViewDidUnload ...
问题已解决,谢谢大家的帮助
为了帮助您理解跟踪,请参阅iOS Debugging Magic(技术说明TN2239)和了解和分析iPhone OS应用程序崩溃报告(技术说明TN2151) 。
杰夫
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.