【发布时间】:2011-12-17 22:03:38
【问题描述】:
我有一个从 SOAP Web 服务获取信息的应用程序,我想在 UITableView 中显示结果。
我有这个应用程序的早期版本,我正在创建一个新版本来清理并删除一堆已弃用且不再使用的遗留代码。
在以前的版本中,这运行良好。在新版本中,没有那么多。
基本上,当前的场景是返回 3 个字符串,我试图将它们用作 UITableView 中数据的基础。
我正在努力解决这个问题,因为很难找到 EXC_BAD_ACCESS 错误!
(顺便说一句,如果有人有办法让调试体验更像 Visual Studio,我很想听听!不知道是哪一行导致了错误,而且无法在崩溃时查看我的局部变量,看看是什么。我已经在异常断点中添加了,但这似乎没有多大作用。)
无论如何,导致错误出现的行是:
return [[self Libraries] count];
它出现在tableView:numberOfRowsInSection:。
我得到的错误消息出现在引用应该存储在NSMutableArray[self Libraries] 中的字符串。
这是怎么回事?
我正在使用 ARC,所以不应该正确处理我的所有内存管理吗?
我的代码中没有任何手动发布声明!
请帮我解决这个问题!
【问题讨论】:
-
ARC 仅简化内存管理。它不会完全接管你。
-
男孩,这是一个无益的评论。这甚至如何指向我解决我的问题?基本上,我的问题是:当我的代码中的
release语句绝对为零时,我怎么能过度发布某些东西?谢谢! -
@Jonathan Grynspan:真的吗?这不是真的!!!例如,使用 ARC,retain、release、autorelease 甚至 retainCount 都被编译器禁止!我了解内存管理。我知道这些陈述应该去哪里。正如您在下面的帖子中看到的那样,事实证明我的代码很好,这是一个 Xcode 4.2 beta 错误。我认为您不太了解 ARC。
-
@JonathanGrynspan 那你为什么会说“它不会完全接管你”?实际上,这正是它的作用。它专门这样做,旨在使内存管理自动化。为此,它专门禁止手动内存管理。相对于传统的内存管理,这到底留下了什么?
-
@JonathanGrynspan 回答“我不会谈论那个”会让您看起来没有真正的答案。我的问题仍然存在:使用 ARC 时留下了哪些传统的手动内存管理?答:没有!它专门让你远离。
标签: objective-c memory exc-bad-access automatic-ref-counting