2012-10-05 10 views
5

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

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

xcodeがまだNIBを読み込もうとしている理由を理解できません。

+0

あなたのコードは何ですか?initWithNibName:bundle:? – Pfitz

+0

おそらく、xibファイルをコードやストーリーボードなどでロードするように指示していることでしょう。コードを表示するか、プロジェクトでNIB名を検索してみてください。 –

+0

私はコードのどこにでもNIBファイルを言及していません。 –

答えて

11

まず、initWithNibName:bundleデフォルトのimplementationは、ペン先のバンドルを検索最初のパラメータとしてnilを渡すと、ビューコントローラのクラスと同じ名前が共有されます。そのため、アプリはそのパラメータを読み込もうとしています。

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

このアプリをシミュレータから削除して、Xcodeプロジェクトをクリーンアップしてもう一度実行すると、ペン先の読み込みが中止されます。

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

+1

貴重な情報ありがとう:) –

+1

私もこの動作を参照し、ビルドクリーンはシミュレータで動作しますが、ビルドがワイルドにあるときに何をするのですか?単純に更新すると、現在は存在していないxibが電話機から削除されていないように見えます。それをパージする方法はありますか?それとも、永遠にその存続を続けなければならないのですか?私は確かに、アップデートを正常に行うためにアンインストールして再インストールする必要があることをユーザに伝えたくありません。 –

0

あなたがどこかのアプリケーションでペン先の名前を使用していない場合、最初のアプリケーションを削除するには、ビルドをきれいに、それをテストし、これはあなたの問題を解決を願って...

関連する問題