EXC_BAD_ACCESS消息发送到解除分配的实例,但我正在使用ARC?

mbm*_*414 10 memory exc-bad-access objective-c automatic-ref-counting

我有一个应用程序从SOAP Web服务获取信息,我想在一个显示结果UITableView.

我有一个以前版本的这个应用程序,我正在创建一个新版本,基本上清理东西,摆脱一堆已弃用,不再使用的遗留代码.

在之前的版本中,这很有效.在新版本中,没有那么多.

基本上,当前场景返回3个字符串,我试图用作我的数据的基础UITableView.

我正在努力解决这个问题,因为它太难以追查EXC_BAD_ACCESS错误了!

(顺便说一句,如果有人有办法使调试体验更像Visual Studio,我很乐意听到它!没有任何想法导致错误,并且无法通过我查看,这是非常令人沮丧的崩溃时的局部变量,看看是什么.我已经在异常断点中添加了,但这似乎并不多.)

无论如何,导致出错的行是:

return [[self Libraries] count];
Run Code Online (Sandbox Code Playgroud)

它发生在tableView:numberOfRowsInSection:.

错误消息我得到APPEARS引用应该存储在中的字符串NSMutableArray [self Libraries].

这里发生了什么?
我正在使用ARC,所以不应该正确处理所有内存管理吗?
ANYWHERE我的代码中没有任何手动发布声明!

请帮我解决这个问题!

cho*_*own 23

在调试器中设置NSZombieEnabled,MallocStackLoggingguard malloc.然后,当您的应用程序崩溃时,在gdb控制台中键入:

(gdb) info malloc-history 0x543216
Run Code Online (Sandbox Code Playgroud)

替换0x543216为导致崩溃的对象的地址,您将获得更有用的堆栈跟踪,它应该帮助您查明代码中导致问题的确切行.

有关更详细的说明,请参阅此文章.

  • 任何人都知道如何使用LLDB做到这一点? (8认同)
  • 这有助于我准确地追踪导致崩溃的线/变量,谢谢! (2认同)