古いバージョンのアプリがデバイスにインストールされています。私の新しいバージョンでは、複雑なものから単なるテーブル ビューに変更され、コードでインスタンス化できるため、.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
おそらく私はバグを見つけましたか?
関連する .xib ファイルを自動的にロードしないように、クラスの名前を SomeController などの別の名前に変更することもできます。