2

NIB/XIB ファイルを Configuration.bundle というバンドルに入れようとしています。バンドルから xib をロードしようとすると、xib ファイルが見つからないため、アプリがクラッシュします。

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle]
pathForResource:@"Configuration" ofType:@"bundle"]];
[bundle load];
NSLog(@"bundle: %@", bundle);

出力を取得します

bundle: NSBundle (まだロードされていません)

「まだロードされていない」という部分は、私を少し怖がらせます。ロードされないのはなぜですか?

そして最後に、ビューコントローラーでペン先をロードしようとすると

ConfigViewController *configViewController = [[ConfigViewController alloc] initWithNibName:@"ConfigViewController" bundle:bundle];

出力を取得します

*キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。

.xib ありとなしの両方を試しました。

何か案は?

4

2 に答える 2

1

load メソッドは、フレームワークなどの実行可能コードをロードするために使用されます。
バンドルには、ロードする実行可能ファイルが含まれていないため、[bundle load]を呼び出す必要はありません。
バンドルの名前が正しければ、[bundle load]以外の記述はすべて問題ありません。

NSString* path=[ [NSBundle mainBundle] pathForResource: @"Configuration" ofType: @"bundle"];

この文字列が正しいパスである場合、バンドルは[bundle load]を呼び出さなくても正しくロードされます。

于 2012-12-11T17:44:23.757 に答える