libc ++ abi.dylib:タイプNSException(lldb)のキャッチされない例外で終了する


186

私はアプリを迅速にプログラミングしていて、iPhoneシミュレーターでテストアプリを実行するとすべてが機能しますが、右にスワイプしようとします。これは、次のページに移動するために追加したジェスチャーです(View Controller Two)クラッシュし、このエラーレポートがコンソールログに表示されます。

2014-10-18 12:07:34.400 soundtest[17081:818922] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<soundtest.ViewControllerTwo 0x7f92f1f20090> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key sfdfa.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001067813f5 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x00000001082afbb7 objc_exception_throw + 45
    2   CoreFoundation                      0x0000000106781039 -[NSException raise] + 9
    3   Foundation                          0x0000000106b984d3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259
    4   CoreFoundation                      0x00000001066cb400 -[NSArray makeObjectsPerformSelector:] + 224
    5   UIKit                               0x00000001072ce97d -[UINib instantiateWithOwner:options:] + 1506
    6   UIKit                               0x000000010712f698 -[UIViewController _loadViewFromNibNamed:bundle:] + 242
    7   UIKit                               0x000000010712fc88 -[UIViewController loadView] + 109
    8   UIKit                               0x000000010712fef9 -[UIViewController loadViewIfRequired] + 75
    9   UIKit                               0x000000010713038e -[UIViewController view] + 27
    10  UIKit                               0x00000001076cd83f -[_UIFullscreenPresentationController _setPresentedViewController:] + 65
    11  UIKit                               0x000000010710bc49 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 105
    12  UIKit                               0x000000010713c121 -[UIViewController _presentViewController:withAnimationController:completion:] + 1746
    13  UIKit                               0x000000010713e461 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132
    14  UIKit                               0x000000010713e385 -[UIViewController presentViewController:animated:completion:] + 229
    15  UIKit                               0x00000001073bb9d6 _UIGestureRecognizerSendActions + 262
    16  UIKit                               0x00000001073ba679 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 532
    17  UIKit                               0x00000001073bf296 ___UIGestureRecognizerUpdate_block_invoke662 + 51
    18  UIKit                               0x00000001073bf192 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 254
    19  UIKit                               0x00000001073b520d _UIGestureRecognizerUpdate + 2796
    20  UIKit                               0x00000001070520a6 -[UIWindow _sendGesturesForEvent:] + 1041
    21  UIKit                               0x0000000107052cd3 -[UIWindow sendEvent:] + 667
    22  UIKit                               0x000000010701fae1 -[UIApplication sendEvent:] + 246
    23  UIKit                               0x000000010702cbad _UIApplicationHandleEventFromQueueEvent + 17370
    24  UIKit                               0x0000000107008233 _UIApplicationHandleEventQueue + 1961
    25  CoreFoundation                      0x00000001066b6ad1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    26  CoreFoundation                      0x00000001066ac99d __CFRunLoopDoSources0 + 269
    27  CoreFoundation                      0x00000001066abfd4 __CFRunLoopRun + 868
    28  CoreFoundation                      0x00000001066aba06 CFRunLoopRunSpecific + 470
    29  GraphicsServices                    0x000000010a1699f0 GSEventRunModal + 161
    30  UIKit                               0x000000010700b550 UIApplicationMain + 1282
    31  soundtest                           0x000000010624503e top_level_code + 78
    32  soundtest                           0x000000010624507a main + 42
    33  libdyld.dylib                       0x000000010ae4a145 start + 1
    34  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

8
NIBですでに存在しないものを配線した可能性があります。移行しようとしているビューがロードされているときにクラッシュが発生したようです。インスペクタペイン(右側)ですべてのアウトレットをチェックして、それらが存在することを確認しますか?これは、存在しない(または名前が変更された)IBActionにボタンを配線した場合にも発生する可能性があります
cmyr

使用されていないものは何もなく、それでもエラーが発生します。
Nick

Xcode 8をSwift 2.3レガシーモードで使用している場合は、この回答を参照してください。stackoverflow.com/ a / 39548326/5175709
Honey

6
一般に、常にコンソールにアクセスしてヒットcmmd + Fします。これにより、コンソール内を検索して、キャッチされなかった例外によるアプリケーションの終了を検索できます。その直後に、理由が表示されますこれにより、アプリがクラッシュした理由がわかります。(ええ、私はこのエラーを何度も経験しました:)
ハニー

1
また、Debug-> Breakpointsで例外ブレークポイントを作成すると役立つ場合があります。その後、デバッガーは問題が存在するコード行で停止するはずです。
チャックボリス

回答:


394

CMYR-「もう存在しない(または名前が変更された)IBActionにボタンを配線した場合も、この状況が発生する可能性があります。」

この問題が発生している場合は、Main.storyboardに移動していることを確認してください。電話のアウトラインの上部にある黄色のボックスアイコン(ビューコントローラー)を右クリックし、黄色のフラグが付いたコンセントを削除します。

このような場合に発生するのは、おそらくアクションに名前を付けて、名前を変更したことです。古い名前を削除する必要があり、それが唯一の問題である場合は、simですぐに起動します。

ここに画像の説明を入力してください


9
すばらしい回答、ありがとうございます!これはXCodeの重大な欠陥です。エラー処理には多くの開発が必要です。
HyperionX

3
私も黄色の三角形の問題を抱えていましたが、それらの三角形だけを修正しても問題は解決しませんでした。:(
Andrej

@IBOutletの名前を変更した後、これが起こった
Mohammed Fadhl

ストーリーボードがターゲットに含まれているかどうかをダブルチェックする必要があります
hoangtuanfithou

ただ、ストーリーボードに接続インスペクタのアウトレットとアクションの参照を見直す
アルバロ・アグエロ

95

偶然にもOS_ACTIVITY_MODE変数を設定しましたか?Xcode 9で、この変数が設定されているかどうか(そしてそれをオフにしているかどうか)を確認するには、次のようにします。

Select from Xcode menu Product -> Scheme -> Edit Scheme.. Select the Run scheme and look under Arguments. If you see the OS_ACTIVITY_MODE variable checked, deselect it


1
ありがとう!そのため、クラッシュの理由はわかりませんでした。「認識されないセレクターがクラスに送信されました」
Denis Kutlubaev

14
良い悲しみ、アップル。彼らの未修正のOSバグにより、これをオンにする必要があり、実際の重要なデバッグメッセージを見逃します。いいキャッチ、シドッシュ。
2018

おかげで、私は以前にこの変数を追加し、それを無効にするのを忘れていました。あなたはそれを釘付けにした!
Rodrigo Recio

1
わあ、ありがとう、lilのバグを捕まえたことはなかったでしょう。うん、バギーなスクロールのデバッグ情報をすべてAppleにねじ込む
ShadowLightz

確かに。ありがとう!
Senocico Stelian

86

Xcode 9とSwift 4の場合:

例外スタックを出力して、例外の理由を確認します。

  1. ブレークポイントナビゲーターを表示するために行きます。
  2. 追加(+)例外ブレークポイントを追加します。

  3. 新しいブレークポイントを選択し、Ctrlキーを押しながらクリックして、ブレークポイントを編集します。

  4. アクションを追加して入力:po $ arg1

ここに画像の説明を入力してください


3
例外をスローする際に実行するアクションの種類にはさまざまなオプションがあるため、アクションは「デバッガコマンド」である必要があることに注意してください。しかし、それは本当に私を助けました!ありがとう!
トッド

ベストアンサー!ときどき、このエラーがポッドまたはライブラリの深いところにあり、それ以上の情報がありませんでした。数か月前にあなたの答えを読んだ後、私はそれを何度も使用し、いつも助けてくれました。
user8675

1
その答えは「Xcodeデバッガーを機能させる方法」として指摘されるべきです
Pier Giorgio Misley

間違いなく最高の答えです。それは私を大いに助けました。
OkanKurtuluş

8

私の場合、デリゲートメソッドを呼び出していましたが、メソッドが宣言されていませんでした。

このエラーは一般的なものであり、いくつかの理由で発生する可能性があります。実際に何が起こったかを確認するためにログを無効にしていないことを確認してください。OS_ACTIVITY_MODEを無効にした場合は、スキームで有効にします。多くの無関係なログを防ぐためにそれを無効にしたかもしれませんが、それらは便利です。

例外ブレークポイントを追加して、原因をより詳細に追跡することもできますpo $arg1。アーメド・ロットフィがすでに述べたように

以下は、実行できる一般的なチェックリストです。

2) Check if you have renamed an IBOutlet and calling it
3) Check if you have renamed a method name or the method doesn't exist
4) Check if you are trying to add or remove any view from hierarchy
5) Check for any missing framework or library
6) Check if you’ve forgot to register your custom cell identifier
7) Check for any missing flag in the Proejct Setting (-obj) or any other linker flag etc.

1
いいリスト!私の場合、カスタムセルの識別子を登録するのを忘れていました。簡単に忘れてしまう可能性があるため、リストに追加する価値があるかもしれません。
luismgb

7

他の解決策ではうまくいかなかった、これが私のものだ。Swift 2.3レガシーモードで実行されている場合、Xcode 8にのみ適用さます。

インターフェイスビルダーがボタンに接続するメソッドの名前を変更しようとしているようです。

これは、より詳細なレーダーです。

解決策(回避策)は、メソッドのパラメーター名を手動で次のように置き換えること_です。

@IBAction func editPictureTapped(sender: UIButton) {  // not working
    print("Tapped")
}

これに変更:

@IBAction func editPictureTapped(_: UIButton) {     // working OK
    print("Tapped")
}

5

セグエ識別子名が間違っている可能性もあります。例-

performSegueWithIdentifier("wrongSegueName", sender: self)

4

私の状況は少し異なっていました。私はにセグエしようとしていてUINavigationController、それを修正したのはメインキュー部分を取得することでした。

Objective-Cの場合:

dispatch_async(dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier:@"SegueName" sender:self];
});

Swift 3の場合:

DispatchQueue.main.async { [weak self] in
    self?.performSegue(withIdentifier: "SegueName", sender: self)
}

3

これはXcode 7で私に起こり始めました、そして私が削除できる黄色の旗のあるアウトレットがありませんでした。

私のために働いた唯一のことは、AppDelegateでこの行を置き換えることでした:

[window addSubview:viewController.view];

に:

[window setRootViewController:viewController];

3

私にとっては、UIButtonを使用したIBActionに問題がありました。

Ctrl +ドラッグしてUIButtonからIBActionを作成する場合は、[タイプ]ドロップダウンから[UIButton]を選択してください。AnyObjectのデフォルトの選択により、UIButtonをタップしたときにアプリがクラッシュします。

ここに画像の説明を入力してください


Action TypeをAnyObjectに設定しましたが、私の場合は機能しませんでした。
Andrej

私の投稿を読んだら、ご存じのとおりAnyObjectが機能しないことを指摘します。
Chris Livdahl、2016

3

トリガーされたセグエが壊れている可能性もあります。セグエまたはコンセントを再接続するとすぐに、ストーリーボードを確認してください。すべてが再び機能するはずです。

セグエスをチェック

Identifierセグエのが正しく、コードに類似していることを確認してください。

ここに画像の説明を入力してください


2

ボタンの1つに接続されている変数の名前を変更すると、この問題が発生しました。それを覚えておいてください!


2

私はXcodeを初めて使用するので、xlsファイルをロードするために問題を特定するのに数時間かかりました。私はそこまでのほとんどのサンプルコードをたどりましたが、どれも表示されたエラーXcodeを解決しません。

私が見つけた解決策は、「ターゲットに追加:」を指定する必要があるということでした。プロジェクト->サポートファイルにドラッグアンドドロップしてxlsファイルをXcodeにインポートするときに、追加するプロジェクトにチェックマークを付けます。


1

ビューコントローラーのボタンに複数のIBActionがある場合があります。それらを見つけて、コントローラーのそのボタンの以前のすべてのアイテムを削除し、新しいボタンを作成してみてください。問題が解決します。


1

ビュー階層にまだないビューに相対制約を動的に適用していないことを確認してください。

UIView *bottomView = [[UIView alloc] initWithFrame:CGRectZero];
[self.view addSubview:bottomView];

bottomConstraint = [NSLayoutConstraint constraintWithItem:bottomView
                                                attribute:NSLayoutAttributeBottom
                                                relatedBy:NSLayoutRelationEqual
                                                   toItem:self.view
                                                attribute:NSLayoutAttributeBottom
                                               multiplier:1
                                                 constant:0];
bottomConstraint.active = YES;

上記の例では、bottomViewは、相対的な制約を適用する前にビュー階層の一部になっています。


1

次の2つの方法でこのエラーが発生しました。

別のUIViewControllerにプッシュすると、このエラーが発生しました。

しかし、誤って他のクラスをサブクラス化し、UITabBarControllerこのエラーが発生しました。

どうすれば修正できますか?私はからサブクラス化しUIViewController、もうクラッシュしませんでした:)


ストーリーボードを使いたくなかった。だから私はそれを削除しました。それでも、プロジェクト設定でその参照を削除するのを忘れています。プロジェクト>> General >> Deployment Info >>をクリックした後、メインインターフェイスをブラックスペースに設定しました。(以前はメインに設定されていました)

両方の状況でわかるように、存在するオブジェクトにアクセスするとエラーが発生します...


1

他の誰かがこのスレッドで発生した場合に備えて、考えられる解決策のリストに問題を追加します。

TableViewセル識別子。まず、セルに識別子があることを確認してください。次に、セルをデキューするときにその識別子を参照していることを確認してください。


1

Swift 4

UIVisualEffectView APIが変更されたため、このエラーが発生しました。Swift 3では、これを実行しても問題ありませんでした。 myVisuallEffectView.addSubview(someSubview)

しかし、Swift 4では、次のように変更する必要がありました。 myVisualEffectView.contentView.addSubview(someSubview)


1

ビジュアルフォーマッターを使用して制約を作成しているときに、ビューの1つにタイプミスがあったときにも同じエラーが発生しました。私はそれが誰かを助けることを願っています...またはいつかまた私に。




0

私の場合、Xcode 8.2.1では、ビューコントローラーにマップキットビューがありました。だから私は行きました

ビルドフェーズ>バイナリとライブラリをリンクする

と追加しMapKit.framework、それで大丈夫だった。

これはフレームワークを必要とする他のビューにも当てはまると思います。

iOS 9で実行されているPSはMap Kit Viewに問題があることを教えてくれましたが、iOS 10では何も教えてくれませんでした!


0

「drop armageddon」ソリューションのみが私のために機能しました:

  • デバイスからアプリを削除
  • きれいなプロジェクト
  • デバイスで新規インストールを実行する

0

私の場合、アサーションが失敗したため(コードで設定)、XCodeが疲れてこのメッセージでアプリを起動できませんでした。

別のデバイスで実行すると、アサーションエラーが表示されましたが、これを修正することができ、すべてが正常に戻りました。


0

Swift 2.3の場合

これはXcode 8とSwift 2.3のバグのようです。ボタンボードアクションをストーリーボード経由でコードに接続している場合は、Xcodeがアクションの名前を変更していないことを確認してください。私にとっては、メソッドの最後にwithSender:を追加しています。 、それで私がやっていることは私のコードに行き、Xcodeが書いたものと一致するようにメソッドの名前を変更します。

他のバージョンについては、正しい答えを確認してください。


0

私の場合、それはInterfaceBuilderでした。制約をめちゃくちゃにした別のViewControllerからいくつかのビューをコピーしました。

InterfaceBuilderで、ViewControllerに赤い矢印エラーが発生しました。

実行中にアプリがクラッシュしました。


0

私の場合、ストーリーボードのターゲットメンバーシップを設定しなかったため、アプリがクラッシュしました。


0

私の場合、プロジェクトBuild SettingsにはFramework Search Pathsおよびの存在しないディレクトリが含まれていLibrary Search Pathsます。


0

私には2つの問題がありました。

1)ストーリーボードファイルで使用されているビューコントローラーがターゲットに含まれていませんでした。

2)私のストーリーボードは約3歳で、タブバーコントローラーのビューコントローラーの1つを最初から再作成する必要がありました(UITextFieldしかありませんでしたが、なぜそれが機能しなかったのかわかりません)。


0

さらに別の考えられる原因:

私の場合、私が持っていたxibと呼んでいたBundle.main.loadNibNamed(...、それがクラッシュしていましたその時点で。すべて私IBOutletsIBActions元気そうだった。最後に、nibが実際にロードされていることに気付きましたが、最初の(そして唯一の)ビュー(nib.first)にアクセスしようとすると、機能しませんでした。実際nib.countには、期待されたの代わりに非常に大きな整数(max int?)を返していました1。ビューを再度追加しようとしましたが、まだうまくいきません。

最後に、xibファイル全体を削除して、最初からやり直しました(ただし、ビューの一部をクリップボードに保存したので、再作成せずに貼り付けることができます)。

これはうまくいった!


0

これは、テーブルがあり、UITableViewDelegateおよびUITableViewDataSourceをクラスに割り当てるのを忘れた場合に発生する可能性があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.