2012-09-24 59 views
4

下面的代码在iOS 4和5中正常工作,但在iOS 6中使用EXC_BAD_ACCESS崩溃。我很感激任何帮助解决它。这段代码被称为在UITableViewController来处理我的应用程序的搜索逻辑:UINavigationController popViewControllerAnimated:在iOS 6中崩溃

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]; 

我添加的方式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]; 

可能是什么问题?

* 编辑

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

+0

有关坠机的更多细节将有所帮助;我想起了http://stackoverflow.com/questions/11584607/how-to-prevent-crash-on-cancel-of-mfmailcomposeviewcontroller/11588677#11588677 –

回答

2

我知道我的问题含糊不清,但我没有其他要离开的东西。我知道行[self.navigationController popViewControllerAnimated:NO];是问题,但我不明白为什么。然后我遇到了this question,第一个答案建议我让我的搜索表成为一个实例变量,而不是每次我想呈现它时都创建一个新实例,并且实际上它工作正常。这肯定是一个记忆问题,我无法把头围绕。

TL;博士

请确定这是被入栈和出栈的UIViewController是一个实例变量。

+0

喜欢TLDR版本。它对我最有意义,更重要的是...工作。 –

7

检查你是否有这样一条线某处在您的视图控制器代码如下:

self.navigationController.delegate=self; 

如果是这样,则必须将其设置回

self.navigationController.delegate=nil; 

你说

[self.navigationController popViewControllerAnimated:YES]; 

否则,popViewControllerAnimated将首先释放委托a然后尝试调用它 - 导致崩溃。

+0

重置导航控制器的委托似乎需要在'viewWillDisappear:'中发生。在'viewDidDisappear:'中做''有时似乎有效,但并不是所有的时间,'viewWillDisappear:'仍然允许委托来控制任何自定义转换。 – Ian

+0

非常感谢。这会花费我很长时间才能找到。这是一个非常令人讨厌的基于时间炸弹的iOS内部堆栈崩溃。 – BaseZen

相关问题