2011-03-08 85 views
0

我有一个问题,我无法找到明确的,也许你可以帮我...的iOS UITableView的随机崩溃

我有一个iPad项目的基础上的UINavigationController,大多数(但不是全部)控制器内部是UITableViewController的实例,以及一切正常......

除了我的应用程序随机崩溃,有时在10分钟的使用后,有时只有10秒后,一切都... ... 它从来没有在同一个视图上崩溃,从来没有在同时,难以复制。

此外,它只能在设备上发生接缝,我从来没有在模拟器中发生这种故障。

调试器并不能帮助我非常多,这里是这样说的: - [UITableView的自动释放]:发送到释放实例0x8e9800

这里的消息是调用堆栈: http://i.stack.imgur.com/JSCHx.png

有什么想法? 感谢(和抱歉,我的英语水平)

+0

请发布文字,而不是图片。更多的人会真正看到问题,而不是跳过它。 – 2011-03-08 17:45:06

+0

我没有发布文字,因为这不是文字我可以复制/粘贴,重新输入所有这些文字... 这个调用堆栈没有出现在调试器中,它只在这个菜单中可见 – ingham 2011-03-09 08:31:00

+0

Go到控制台,它在那里复制/粘贴。也有助于搜索引擎在未来发现这个问题。 – 2011-03-09 13:16:54

回答

1

您在代码中的某处过度释放UITableView。你在你的UITableViewControllers里面的UITableView上调用releaseautorelease?你应该只释放你自己的对象。您可以通过使用从alloc,new,copyretain开始的方法来拥有一个对象。

有关更多信息,请阅读可可内存管理指南。

相关链接:

http://www.cocoadev.com/index.pl?MemoryManagement

http://www.cocoadev.com/index.pl?RulesOfThumb

+0

我从来不会在IBOutlet上调用release或autorelease – ingham 2011-03-09 08:26:05

0

在某些时候,你要么释放,你并不拥有一个UITableView实例或你在某些时候未能retain一个地方你保持对它的引用(例如,你存储它在一个ivar或宣布分配而不是保留的财产中)。

+0

我不使用属性来附加IBOutlet,只有变量,所以我从来没有释放或autorelease他们。 崩溃是完全随机的,从来没有发生在同一视图 我相信这可能是由我的XIB中的一个不正确的参数引起的,但是最重要的参数是什么? 这可能是由于我不保留/释放我的IBOutlets的事实吗? – ingham 2011-03-09 08:28:24

0

我已经写了有关如何调试我的博客上这样的事情:

http://loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html

基本上,尝试这三样东西第一个:

  1. 进行构建的分析和确定你看到僵尸
  2. 关闭所有运行你的代码 - 它会告诉你,如果你跟dealloced对象
  3. 如果失败,请尝试调试的malloc,但是这方法更难。
0

我很抱歉,在重新阅读我所有的源代码后,我发现一个ViewController(我有大约20个ViewController),我在ViewDidUnload中发布了一个Outlet。

它随机崩溃的原因是,我没有很好地理解ViewDidUnload的机制,当内存不足并且视图不可见时,它被调用来释放视图(但不是控制器的对象)(例如:First ViewController一NavigationController),并且视角的重新加载时的ViewController成为再次可见......

在模拟器中,内存是很少的问题,所以ViewDidUnload几乎从来没有叫......

固定的问题,谢谢你的每个人都需要你的帮助