何がこのクラッシュの原因となることができますか?
-
26-09-2019 - |
質問
私は最近、通知がNSNotificationCenterを使用して投稿された際に発見されていないセレクタに関するクラッシュを持っていました。何がこのエラーの原因となることができますか?
私は、通知の受信側の問題ではないようですつまり、通知が掲載された後に呼び出されて何のユーザーコードがなかったことに気付きました。しかし、どのようなNSNotificationCenterのクラッシュを引き起こす可能性が?
ここでは、コールのスタックトレースがあります:
0 libSystem.B.dylib 0x00078ac8 __kill + 8
1 libSystem.B.dylib 0x00078ab8 kill + 4
2 libSystem.B.dylib 0x00078aaa raise + 10
3 libSystem.B.dylib 0x0008d03a abort + 50
4 libstdc++.6.dylib 0x00044a20 __gnu_cxx::__verbose_terminate_handler() + 376
5 libobjc.A.dylib 0x00005958 _objc_terminate + 104
6 libstdc++.6.dylib 0x00042df2 __cxxabiv1::__terminate(void (*)()) + 46
7 libstdc++.6.dylib 0x00042e46 std::terminate() + 10
8 libstdc++.6.dylib 0x00042f16 __cxa_throw + 78
9 libobjc.A.dylib 0x00004838 objc_exception_throw + 64
10 CoreFoundation 0x000a167c -[NSObject(NSObject) doesNotRecognizeSelector:] + 96
11 CoreFoundation 0x000491d2 ___forwarding___ + 502
12 CoreFoundation 0x00048f88 _CF_forwarding_prep_0 + 40
13 Foundation 0x000146ac _nsnote_callback + 136
14 CoreFoundation 0x0002670c __CFXNotificationPost_old + 396
15 CoreFoundation 0x000263ac _CFXNotificationPostNotification + 112
16 Foundation 0x0000b014 -[NSNotificationCenter postNotification:] + 132
17 [My Application] 0x000a5ad2 -[PortfolioUpdateOperation main] (PortfolioUpdateOperation.m:37)
18 Foundation 0x0000e9e8 -[__NSOperationInternal start] + 652
19 Foundation 0x0000e74c -[NSOperation start] + 16
20 Foundation 0x00023574 ____startOperations_block_invoke_2 + 40
21 libSystem.B.dylib 0x000d597c _dispatch_call_block_and_release + 12
22 libSystem.B.dylib 0x000d675c _dispatch_worker_thread2 + 120
23 libSystem.B.dylib 0x0007a67a _pthread_wqthread + 258
24 libSystem.B.dylib 0x00073190 start_wqthread + 0
解決
ほとんどのNSNotificationCenterは、もはやが存在しないことをオブジェクトのインスタンスを通知しようとしている。
は言い換えれば、オブジェクトは、NSNotificationCenterオブザーバとしての地位を除去せずに割当て解除されました。オブジェクトがNSNotificationCenterのオブザーバーとしての地位を追加しますが、NSNotificationCenterから自分自身を削除するために失敗したときのケースのためにあなたのコードを確認します。
他のヒント
あなたのようなルックスは、あなたが提供するセレクタに応答しないオブザーバーとしてのオブジェクトを追加しました。あなたの通知方法は、タイプの1つの引数NSNotification
たぶん、オブジェクトのクラス名などのいくつかのログに続いrespondsToSelector
にチェックがさらにあなたを助けることができる?
所属していません StackOverflow