我有一个导航基于iPhone应用程序。 当你按下一个细胞在tableview中一个新的UIViewController推到导航堆栈。在此视图控制器我设置的自定义titleview的在viewDidLoad方法:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Setup custom navigation title
    [self setTitle:@"Mediaportal"];
    navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
    [navItem setTitle:[theServer name]];
    [navItem setSubTitle:@""];
    [self.navigationItem setTitleView:navItem.view];

…
}

在我切换回RootViewController的:

[self.navigationController popToRootViewControllerAnimated:YES];

该应用与以下错误崩溃(NSZombieEnabled = YES):

*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80

从我可以看到RootViewController的仍试图访问定制titleview的,将其与所述第二视图控制器释放。有一次,我在我的代码注释掉定制titleview的部分应用程序的工作原理。 我试图navigationItem.titleView设置为第二的ViewController之前零(如在苹果文档中找到)被释放,但是这并不能帮助。

你有一个提示我能做些什么来防止这种崩溃?

谢谢, 标记

有帮助吗?

解决方案 2

我终于找到了它的溶液(相当简单的一个)。 我不得不alloc和通过其属性初始化的navItem然后它被保留:

self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];

其他提示

我有这个确切的同样的错误了一个月左右前,正是同样的情况。它驱使我疯了。

我发现我大跌眼镜太的viewController尚未在所有的释放。我有一个自定义的UIButton子类添加到然而这一观点在第二视图已经被推已被释放。所以弹出回来的时候,在UIButton的是不存在。

检查你大跌眼镜回视图,以确保你不会有任何类,你是解除分配,或没有你知道被自动释放。

希望这有助于。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top