我有一个从SOAP Web服务获取信息的应用程序,我希望在UITableView
中显示结果。
我有一个以前版本的这个应用程序,我正在创建一个新版本,基本上清理一些东西,摆脱一堆已弃用且不再使用的遗留代码。
在之前的版本中,这很有效。在新版本中,没有那么多。
基本上,当前场景返回3个字符串,我试图将其用作UITableView
中数据的基础。
我正在努力解决这个问题,因为它很难找到EXC_BAD_ACCESS
错误!
(顺便说一句,如果某人有办法让调试体验更像Visual Studio,我很乐意听到它!如果不知道哪一行导致了错误,那么也是如此令人沮丧,而且也无法在崩溃时查看我的局部变量以查看它是什么。我已经在异常断点中添加了,但这似乎没有做太多。)
无论如何,导致出错的行是:
return [[self Libraries] count];
它出现在tableView:numberOfRowsInSection:
。
错误消息我获得APPEARS以引用应存储在NSMutableArray
[self Libraries]
中的字符串。
这里发生了什么事? 我正在使用 ARC ,所以不应该正确处理我的所有内存管理吗? 我的代码中没有任何手动发布声明!
请帮我解决这个问题!
答案 0 :(得分:23)
在调试器中设置NSZombieEnabled,MallocStackLogging和guard malloc。然后,当您的应用程序崩溃时,请在gdb控制台中输入:
(gdb) info malloc-history 0x543216
将0x543216
替换为导致崩溃的对象的地址,您将获得更有用的堆栈跟踪,它可以帮助您查明代码中导致问题的确切行。
答案 1 :(得分:2)
ARC依赖于Apple标准/推荐的命名做法。检查您是否违反了其中任何一项。
对于初学者来说,如果“Libraries
”是一个实例,则存在命名问题。
答案 2 :(得分:1)
正如我上面提到的Jonathan Grynspan,我理解Obj-C内存管理。出于某种原因,我获得了保留/发布/发布(由ARC执行),并且在最终版本中修复了该错误。
感谢您帮助跟踪此问题!至少我得到了一个明确的答案,为什么存在问题!