当视图被关闭时,呈现视图将抛出EXC_BAD_ACCESS

时间:2012-03-09 18:58:16

标签: xcode ipad view exc-bad-access layer

我正在将我的iPhone应用程序转换为iPad版本,为iPad创建新的XIB,并使用~ipad XIB名称将它们绑定到现有的目标C类。

在iPhone版本中,我使用导航控制器向后退到应用程序。这也应该在iPad上运行得很好,但是当导航控制器确实出现时,它没有响应。实际上它对于任何交互都是不可见的,如果导航控制器后面有一张地图,你再双击一下,​​你只需缩放你点击的地图。

所以我在iPad视图中包含一个按钮,它应该做同样的事情。按下我打电话给

[[self navigationController] popViewControllerAnimated: YES];

当我打电话给我时,我得到了EXC_BAD_ACCESS。我已经进入幽灵般的僵尸模式,这给了我这个

*** -[UIWindowLayer superlayer]: message sent to deallocated instance 0x83bb9f0

我确定0x83bb9f0是展示图层self.view.layer

我正在使用ARC处理我的分配和deallocs。

问题:如何阻止self.view.layer解除分配?或者如何在适当的时间再次分配它以便我不会收到此错误?

如果需要,我可以提供更多代码。非常感谢!!

编辑:继承人创建主页面(登录页面)和导航控制器

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    landingPage *LandingPage = [[landingPage alloc] initWithNibName:@"landingPage" bundle:nil];

    self.navigationController = [[UINavigationController alloc] initWithRootViewController:LandingPage];
    self.window.rootViewController = self.navigationController;
   // [self.navigationController pushViewController:LandingPage animated:YES];

   [self.window makeKeyAndVisible];
    return YES;

然后在这里调用内部视图:

mapView *MapView = nil;
        MapView =[[mapView alloc] initWithNibName:@"mapView" bundle:nil];
        [self.navigationController pushViewController:MapView animated:YES];

1 个答案:

答案 0 :(得分:4)

所以我明白了!

我为iPad版创建的XIB是Windows而不是视图。我重新创建了所有这些作为视图并操纵它并且它工作得很好!