Iphone 推/弹出视图控制器EXC\u访问错误

Iphone 推/弹出视图控制器EXC\u访问错误,iphone,uiviewcontroller,exc-bad-access,Iphone,Uiviewcontroller,Exc Bad Access,有人知道为什么如果我按下/弹出localSearchViewController,我会在5次按下/弹出后出现EXC\u BAD\u访问错误吗 if (localSearchViewController == nil) localSearchViewController = [[LocalSearchViewController alloc] init]; CBAAppAppDelegate *app = (CBAAppAppDelegate *) [[UIApplication

有人知道为什么如果我按下/弹出localSearchViewController,我会在5次按下/弹出后出现EXC\u BAD\u访问错误吗

if (localSearchViewController == nil)
    localSearchViewController = [[LocalSearchViewController alloc] init];

    CBAAppAppDelegate *app = (CBAAppAppDelegate *) [[UIApplication sharedApplication] delegate];

    [app.navBarController.navigationBar setHidden:YES];

    [app.navBarController pushViewController: localSearchViewController
                                    animated:YES];

用大括号括起来

if (localSearchViewController == nil) {
    localSearchViewController = [[LocalSearchViewController alloc] init];

    CBAAppAppDelegate *app = (CBAAppAppDelegate *) [[UIApplication sharedApplication] delegate];

    [app.navBarController.navigationBar setHidden:YES];

    [app.navBarController pushViewController: localSearchViewController
                                animated:YES];
}

我不知道这是否是崩溃的原因,但除非您覆盖了视图控制器的init方法,否则您应该使用其指定的初始化器:

-idinitWithNibName:NSString*nibName绑定:NSBundle*nibBundle

如果在实现文件中定义了此方法,请确保也在对其调用super

如果这并不能解决您的问题,那么您是否可以尝试通过此方法以及在localSearchViewController中设置断点来找到代码崩溃的确切位置。这很可能是代码中某个地方的过度发布问题

[编辑以添加]

以下是初始化视图控制器的代码:


localSearchViewController=[[localSearchViewController alloc]initWithNibName:@YourNibName bundle:nil]

但是当我第二次尝试推动时,推动就不会发生,这不太可能解决问题。检查nil是正确的,因为其目的是创建localSearchViewController的新实例,这在他的代码上下文中是有意义的。只要他有一个名为LocalSearchView.xib或我认为是localSearchViewController.xib的nib,那么init应该可以正常工作。Apple文档中:指定的初始值设定项是每个类中的方法,通过向super发送消息以执行继承的方法来保证继承的实例变量被初始化。它也是完成大部分工作的方法,也是同一类中其他初始化方法调用的方法。因此,只要init中包含对指定初始化器上的[super]的调用,就可以调用init。这保证了类的初始化方式是它的本意,因为我们不知道调用此方法时超类是否执行任何其他工作;