UINavigationController popViewControllerAnimated:在iOS 6中崩溃

Ant*_*ony 4 iphone xcode objective-c uitableview ios6

下面的代码在iOS 4和5中运行良好,但在iOS 6中崩溃EXC_BAD_ACCESS.我很感激您在排除故障时提供帮助.在UITableViewController处理我的应用程序的搜索逻辑的过程中调用此代码:

CATransition *transition = [CATransition animation];
transition.duration = 0.3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionFade;

[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController popViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

我添加的tableView方式类似,并且在调用时不会崩溃:

SearchTVC *searchTable = [[SearchTVC alloc] init];
searchTable.detailViewController = self.detailViewController;

CATransition *transition = [CATransition animation];
transition.duration = 0.3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionFade;

[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:searchTable animated:NO];
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

*编辑

有趣的是,如果我使用[self.navigationController popViewControllerAnimated:YES];(YES而不是NO),则不会发生崩溃.但当然这会破坏使用自定义流行动画的目的.

LPG*_*LPG 7

检查视图控制器代码中是否有如下所示的行:

self.navigationController.delegate=self; 
Run Code Online (Sandbox Code Playgroud)

如果是这样,那么你必须将其重新设置

self.navigationController.delegate=nil;
Run Code Online (Sandbox Code Playgroud)

在你说之前

[self.navigationController popViewControllerAnimated:YES]; 
Run Code Online (Sandbox Code Playgroud)

否则,popViewControllerAnimated将首先解除分配委托,然后尝试调用它 - 导致崩溃.