5

NIB ファイルを使用してビューの作業を開始し、プロジェクトから削除してプログラムでビルドすることにしました。私のコードのいずれにもNIBファイルへの想定される呼び出しについての言及はなく、.XIBはどのアプリケーションディレクトリにも存在しません。これは、デバッグ コンソールからスローされた正確なエラーです。

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:      
'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "GESplitMainViewController"
nib but the view outlet was not set.' 

xcode がまだ NIB をロードしようとしている理由がわかりません。

4

2 に答える 2

11

まず、最初のパラメーターとして nil を渡した場合、デフォルトの実装initWithNibName:bundleは、ビュー コントローラーのクラスと同じ名前を共有する nib をバンドルで検索します。これが、アプリが nib を読み込もうとする理由です。

1 つを見つけているという事実は、おそらく、プロジェクトで使用していた .xib が、シミュレーターが実行しているバンドルにまだ含まれているためです。Xcode には、プロジェクトからリソースを削除しても、削除されたリソースをシミュレーター バンドルに残す習慣があります。

シミュレーターからアプリを削除し、Xcode プロジェクトを消去して再度実行すると、nib のロードが停止するはずです。

これがアプリが nib から読み込まれる理由ですが、クラッシュする理由ではありません。クラッシュは、使用していた古い .xib にビュー コントローラーのビュー アウトレットに接続されたビューがなかったためです。

于 2012-10-05T09:56:56.280 に答える
0

アプリケーションのどこにも nib 名を使用していない場合は、最初にアプリケーションを削除し、ビルドをクリーンアップしてテストします。これで問題が解決することを願っています..

于 2012-10-05T09:56:00.587 に答える