半日ほどハマっていた問題。
##結論
結論から書いちゃうと、 Organizerの「Derived Data」を消したら直った。
ただ念のため、上記以外にも
- アプリの削除
- Cleanの実行
もやっておいたほうがよさげです。
##色々試したメモ
せっかくなので、このことに気づくまでにやった対応などをメモしておく。
###xibファイルからの参照
すぐに行き当たったのはxibファイルを消したから、とか、xibファイル内で指定しているクラス名をそのままにしてクラス名を変更しちゃった、とか。
そういうのは出てきたんですが、どちらも問題なし。(確かにxibファイルは消していた)
Cleanしたりアプリ消してみたりしてもダメでした。
###loadViewをオーバーライドするとなぜか動く
xibファイルをずっと疑っていた理由として、エラーが出ているViewControllerクラスのloadView
メソッドをオーバーライドすると落ちなくなる、というもの。理由は不明。
- (void)loadView
{
// こうすると落ちなくなる
[super loadView];
}
###NSSetUncaughtExceptionHandler関数
色々やっていてとにかく少しでも情報を集めようとして教えてもらったのがこれ。
キャッチされていないエラーが発生した際に呼び出される関数。
プロトタイプは以下。
typedef void NSUncaughtExceptionHandler(NSException *exception);
FOUNDATION_EXPORT NSUncaughtExceptionHandler *NSGetUncaughtExceptionHandler(void);
FOUNDATION_EXPORT void NSSetUncaughtExceptionHandler(NSUncaughtExceptionHandler *);
NSException
クラスにはエラーの内容が入っています。
// 例
NSLog(@"Stack Trace: %@", [exception callStackSymbols]);