2

我在设备上安装了旧版本的应用程序。在我的新版本中,我不再使用 .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 文件。

4

2 回答 2

2

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

技术说明 TN2285

于 2013-07-08T00:48:39.960 回答
1

两条建议:

  • 您是否尝试过重新启动 Xcode 和您用于测试的设备?(我有 Xcode 搞乱缓存管理并继续使用旧版本文件的长期记录)
  • 您确定您的 XIB 文件没有被另一个文件引用吗?(也许您的主视图有一个标签栏控制器,您在其中留下了您删除的 XIB 的名称)
于 2013-04-21T22:46:13.263 回答