Objective c 取消行索引路径:在iOS5中失败

Objective c 取消行索引路径:在iOS5中失败,objective-c,ios,memory-management,xcode4,Objective C,Ios,Memory Management,Xcode4,以下内容在iOS 4.3中运行良好,但在iOS 5中抛出了EXC_BAD_访问 if(mainTable != nil){ [mainTable deselectRowAtIndexPath:currentIndexPath animated:YES]; mainTable属于UITableView类型。它在取消RowAtIndexPath:的行上失败。离开主(第一个)表视图时会发生上述异常。步骤是:单击主表视图中的行。将显示另一个表视图。单击左上角按钮返回主表,出现异常 事实上,到那

以下内容在iOS 4.3中运行良好,但在iOS 5中抛出了EXC_BAD_访问

if(mainTable != nil){
    [mainTable deselectRowAtIndexPath:currentIndexPath animated:YES];
mainTable属于UITableView类型。它在取消RowAtIndexPath:的行上失败。离开主(第一个)表视图时会发生上述异常。步骤是:单击主表视图中的行。将显示另一个表视图。单击左上角按钮返回主表,出现异常

事实上,到那时

 - (void)viewDidDisappear:(BOOL)animated
通过断点命中,currentIndexPath已在iOS5中发布

我能在这里找什么?我知道iOS5在释放对象时做了一些不同的事情。也许我可以做一些额外的检查,但我不确定从哪里开始

编辑: 它被定义为

currentCellIndex = indexPath;   
来自

-(void) displaySubView:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath
我确实在我的计划的运行部分启用了僵尸,现在可以获得详细信息了。当我点击上一行时,我在控制台中看到:

*** -[NSIndexPath isEqual:]: message sent to deallocated instance 0x85a2010
为什么在iOS5中会发生这种情况,而在iOS 4.3中不会?我在currentIndexPath上的dealloc中确实有一个断点,它从未被命中


我开始相信这与ARC有关。我还有很多保留/发布。我不想对ARC进行自动格式化,因为这会导致更多问题。我确实尝试过在每个文件的基础上禁用ARC的标志。这只是用未知的命令抛出了编译器错误。

这不是你的问题的确切答案,但是你可能想考虑取消在<代码>中的行。
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [mainTable deselectRowAtIndexPath:[mainTable indexPathForSelectedRow] animated:YES];
}
您需要在“父”视图控制器中实现这一点,其中声明了
mainTable


关于你的实际问题,你能告诉我们你的
@属性如何查找
currentCellIndex

你是如何获得currentIndexPath的吗?一个开始的地方是启用僵尸:更好的链接:僵尸已启用,更多细节请参见第页的编辑。我将尝试你提到的内容,但不幸的是,此错误正在阻止:。这个项目真的因为iOS5而失败了。