16
16

More than 5 years have passed since last update.

[Objective-C] this class is not key value coding-compliant for the key *HOGEHOGE* でアプリが落ちる

Posted at

半日ほどハマっていた問題。

結論

結論から書いちゃうと、 Organizerの「Derived Data」を消したら直った。

cap.png

ただ念のため、上記以外にも

  • アプリの削除
  • 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]);
16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16