iOS5抛出EXC_BAD_ACCESS错误

时间:2011-10-07 13:10:01

标签: iphone objective-c ios5

我们有Objective-C代码,可以在所有其他版本的iOS中正常运行,但现在却无法使用iOS5。下面是代码失败的部分,它在setSelectedCell行上以'EXC_BAD_ACCESS'停止

-(void)viewWillAppear:(BOOL)animated {
    Application *app = [Application sharedManager];
    [app setSelectedCell:nil deselectedCell:[menuItemTableView 
                      cellForRowAtIndexPath:currentIndexPath]];
}

有没有人遇到过这个错误?任何想法如何解决?

谢谢!

3 个答案:

答案 0 :(得分:4)

可能你的错误存在于过去的版本中,现在只是在iOS5中被更好地检测到了。关于EXC_BAD_ACCESS最重要的一点是,检测它的行可能与引起它的代码有关,也可能没有。

我在这里广泛地写了它:

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

那里也有调试技巧,但总结一下

  1. 进行构建和分析 - 修复您看到的所有内容
  2. 如果您认为自己过度释放,请尝试打开僵尸
  3. 调试Malloc可能会使错误更接近原因
  4. 重申 - 仅仅因为你没有得到EXC_BAD_ACCESS并不意味着你没有内存崩溃的错误 - 它只是意味着它没有被虚拟内存/内存分页系统检测到。

答案 1 :(得分:0)

我无法从您粘贴的小代码中看出来,但它可能是自动引用计数(A.R.C。)的问题

http://developer.apple.com/technologies/ios5/

尝试在构建设置中关闭此功能。

答案 2 :(得分:0)

如果menuItemTable已经发布但未设置为nil,则会导致应用程序崩溃并为您提供EXC_BAD_ACCESS,因为您正在向不存在且不是nil的内容发送消息。