我在当前项目中遇到了这个超级奇怪的错误。要了解发生了什么,我将所有内容缩小到最简单的应用程序,可以在此处下载:
download simple example here(此处没有自动释放所提到的索引数组)
看起来像方法:sectionIndexTitlesForTableView与它有关,因为当它没有实现时不会出现bug。但是超级奇怪的事情是:当它被卡住并且你摇动设备时它会再次响应。如果您下载了上面的代码,在应用程序中您必须按下按钮,向下滚动返回,同时仍然滚动并再次按下它,它肯定会在几次后崩溃。如果不是重新启动它并再次尝试。它最终会崩溃。
答案 0 :(得分:0)
当您弹出tableview控制器时,您是否取消了可能附加到它的viewController的任何委托?我发现这是过去iOS中各种组件的一些“有趣”效果的原因
答案 1 :(得分:0)
您是否可以在Xcode中调试设备上的应用时发生这种情况?如果是这样,一旦挂起,请单击Xcode中的“暂停”按钮。这会将调试器分解为正在运行的进程。然后,您可以检查调试器的Threads区域中的每个线程,以查看callstack的位置。这将显示您的代码挂起的位置。
答案 2 :(得分:0)
您的自动释放的“NSMutableArray *索引”可能正在被UITableView引用而不是保留。我建议尝试在UITaleView的初始化期间创建数组,并在UITableView的dealloc上释放它,或者如果它需要是动态的,每次调用sectionIndexTitlesForTableView时都释放并重新创建它。这样你知道只要UITableView试图访问这个方法返回的指针它就会存在。
答案 3 :(得分:0)
原来这是一个iOS错误。我还没有提交。但是我会尽快更新这篇文章。