使用.xib更新设备上的应用程序崩溃应用程序

时间:2013-04-21 22:24:44

标签: ios crash uitableview xib

我在设备上安装了较旧版本的应用。在我的新版本中,我不再使用.xib文件,因为它从复杂的东西变为表格视图,我可以在代码中实例化它。

然而,当我在设备上构建并运行时,它仍会崩溃,因为它仍然试图从旧应用程序中包含的.xib文件加载控制器,并且抱怨UILabel缺少键/值对。

例如:

SomeViewController.h(UITableViewController)
SomeViewController.m
SomeViewController.xib(在新版本中删除)

SomeViewController *controller = [[SomeViewController alloc] initWithStyle:UITableViewStylePlain];

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];

    if (self)
    {
    }

    return self;
}

即使我调用“initWithStyle”,它仍然会尝试加载预先存在的.xib!

我目前的解决方案是使用空白的UITableView创建SomeViewController.xib。

我怀疑,当用户从应用程序商店更新应用程序时,它将覆盖整个应用程序而不会遗漏任何内容。

这是真的吗?应用更新是否会覆盖现有应用,还是会留下延迟的.xib文件?

现在我必须使用其他所有视图测试旧版本,以确保没有其他问题延迟。

阅读NIB上的开发人员文字: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

也许我发现了一个错误?

另一个选择是我将类重命名为SomeController,以避免自动加载相关的.xib文件。

2 个答案:

答案 0 :(得分:2)

Apple在以下有关测试iOS应用更新的技术说明中解决了此问题:

Technical Note TN2285

答案 1 :(得分:1)

两项建议:

  • 您是否尝试重新启动Xcode以及用于测试的设备? (我有很长时间记录Xcode搞乱缓存管理并继续使用旧版本的文件)
  • 您确定您的XIB文件未被其他人引用吗? (也许你的主视图有一个标签栏控制器,你留下了你删除的XIB的名称)