2011-10-07 55 views
0

我们的Objective-C代码在所有其他版本的iOS中都能正常工作,但现在iOS5失败。下面是代码失败的部分,它停止在与setSelectedCell线“EXC_BAD_ACCESS”iOS5抛出EXC_BAD_ACCESS错误

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

任何人碰到这个错误来吗?任何想法如何解决?

谢谢!

+0

'sharedManager'是什么类型? – FreeAsInBeer

+2

什么是应用程序? – kennytm

回答

4

也许,你的bug在过去的版本中已经存在,现在在iOS5中被发现的更好。了解EXC_BAD_ACCESS最重要的一点是,它被检测到的行可能与导致它的代码有任何关系。

我写它广泛在这里:

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

有调试技巧有作为,但总结

  1. 进行构建和分析 - 解决您看到
  2. 一切
  3. 如果你认为你是过度释放,尝试打开僵尸
  4. 调试Malloc可能会使错误发生更接近到原因

重申 - 仅仅因为你没有得到EXC_BAD_ACCESS并不意味着你没有内存崩溃的错误 - 它只是意味着它没有被虚拟检测到内存/内存分页系统。

0

如果menuItemTable已被释放但未设置为零,则会在应用程序崩溃时给您一个EXC_BAD_ACCESS,因为您正在向不存在且不为零的内容发送消息。