iphone - UIViewController自定义titleView使应用崩溃

标签 iphone uiviewcontroller crash titleview

我有一个基于导航的iPhone应用程序。
当您在表格 View 中的一个单元格上按下时,一个新的UIViewController将被推到导航堆栈中。在此 View Controller 中,我在viewDidLoad方法中设置了一个自定义titleView:

- (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,该标题已与第二个 View Controller 释放。在我的代码中注释掉自定义titleView部分后,该应用便可以工作。
我试图在释放第二个ViewController之前将navigationItem.titleView设置为nil(在Apple文档中找到),但这无济于事。

您是否暗示我可以采取什么措施来防止此崩溃?

谢谢,
标记。

最佳答案

我大约一个月前遇到了完全相同的错误,情况完全相同。它使我发疯。

我发现我弹出的viewController根本没有被释放。我在该 View 中添加了一个自定义UIButton子类,但是当按下第二个 View 时,该子类已被释放。因此,当弹出时,UIButton不存在。

检查您弹出的 View ,以确保没有任何正在取消分配的类或在不知情的情况下被自动释放。

希望这可以帮助。

关于iphone - UIViewController自定义titleView使应用崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404695/

相关文章:

iphone - 检测哪个图像在 ScrollView 上

iphone - 将 NSDate 拆分为年月日

ios - 如何将 UIViewController 类型传递给函数并在 iOS Swift 中类型转换变量?

swift - 调用 UIActivityViewController 时 IOS 8 iPad 应用程序崩溃

java - Tomcat突然死了

macos - CoreAnalytics::Client/FrameworkConfiguration::init 内神秘崩溃

iphone - xcode 自定义 ttf 字体不工作

ios - 调整 UILabel 的高度以适合文本

ios5 - 调用应用程序的时间:didFinishLaunchingWithOptions:在iOS 5.x和iOS 6之间有所不同

ios - swift 关闭 View 时,屏幕有时会卡住且没有错误