我有两个视图:第一个是普通样式的UITableView
(以编程方式创建);第二个是UIScrollView
,其中包含图像和分组样式的UITableView
(也是以编程方式创建的)。
当我从firstView导航时 - > secondView一切正常。但是,如果我回到firstView
,然后我尝试第二次导航firstView - > secondView,我会收到EXC_BAD_ACCESS
错误。
更新
这是UITableView
中<{1}}代理人的代码:
secondView
答案 0 :(得分:1)
EXC_BAD_ACCESS
不是由一个视图进展到下一个视图引起的。相反,它将是那些视图的属性,或视图对象本身的创建和释放 - 或者不是 - 应该归咎于它们。
您的第一步是运行分析器。然后,如果你已经修复了所有这些并且仍然存在问题,请开始在Instruments中运行Leaks工具。
有关解决EXC_BAD_ACCESS
问题的详细信息,以及导致这些错误的原因的详尽链接以及有关如何修复的分步说明,请查看这些问题的答案:
finding reason for EXC_BAD_ACCESS - in Xcode4
Random EXC_BAD_ACCESS in a place that it cannot happen
在您的情况下,当您返回secondView
时,我会专门了解您如何创建firstView
以及如何使用secondView
。
答案 1 :(得分:1)
我花了一周的时间来跟踪一个大型应用中的EXC_BAD_ACCESS
问题,该应用在将其转换为ARC之前工作正常。我会在“switch”结构的右括号上得到EXC_BAD_ACCESS
。然而,NSZombieEnabled
和各种仪器设置不会检测到任何东西。
固定它的原因是在箱子周围放置了一些能够产生差异的曲线。我为他们每个人做了这件事,虽然它可能只对某些人来说很重要,即
在:
case ...:
stmt;
stmt;
break;
后:
case ...:{
stmt;
stmt;
}break;
这解决了我在大型应用中的两个地方的问题。我知道我读过关于ARC和switch / case的某些内容(可能有人可以添加链接),但我不明白为什么会发生这种情况以及为什么这个修复工作的理论。也许有人可以解释。 (后来:在openradar上阅读下面的参考文献之后,这一切都有道理 - 在case语句之间生成的“清理代码”中出现了错误 - 生成了一个虚假的“release”,很快就会导致{{1 }。)
我也发现了这一点,可能与此有关:http://openradar.appspot.com/11329693