0

通知を投稿しようとすると、EXC_BAD_ACCESS(code = 2、address = 0x8)エラーが発生します。

たまに私は見るでしょう:

-[__NSMallocBlock__ handleMessagesReceived:]: unrecognized selector sent to instance 0x9855cd0

通知の郵便番号は次のようになります。

NSDictionary *notificationInfo = [NSDictionary dictionaryWithObject:outputArray forKey:@"messages"];
[[NSNotificationCenter defaultCenter] postNotificationName:kMESocialHeatmapMessagesReceivedNotification object:nil userInfo:notificationInfo];

オブザーバーコードは次のようになります(これはその通知の唯一のハンドラーです):

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMessagesReceived:) name:kMESocialHeatmapMessagesReceivedNotification object:nil];

そしてハンドラーコード:

- (void)handleMessagesReceived:(NSNotification *)notification {...}

プロジェクトをクリーンアップし(CMD-SHIF-K、CMD-ALT-SHIFT-K、オーガナイザーから派生データを削除)、Xcodeとマシンの両方を再起動し、関連するコードを書き直しました。同じ問題ですが、その問題は見当たりません。

どんな洞察も大歓迎です。

乾杯、

クリス

==========更新(私自身の質問に答えることはできません...)============

乾杯、フィリップと鳴った、それは私を正しい方向に向けた。

EXC_BAD_ACCESSが割り当て解除されたオブジェクトを示していることは理解していますが、この場合、システムのメインクラスが問題のオブジェクト(ヒートマップ)を保持していたため、これは不可能でした。

問題は、ヒートマップの作成とそれが共有するデータモデルの入力との間の競合状態であることが判明しました。ヒートマップの作成が完了する前に、時折、ポピュレーションが発生していました(どちらもイベント駆動型です)。

ヒートマップを保持しているクラスが同期呼び出しを行って、ヒートマップがクリーンになった後にデータを入力するように、コードを作り直しました。

入力してくれてありがとう、それは私に頭痛を救った。:)

クリス

4

2 に答える 2

0

エラーEXC_BAD_ACCESSは、解放されたオブジェクトにメッセージを初期化または送信せずにオブジェクトを解放することによって発生するエラーです。EXC_BAD_ACCESSの詳細については、この質問を確認してください。

于 2012-05-23T18:34:39.937 に答える
0

問題は、ヒートマップの作成とそれが共有するデータモデルの入力との間の競合状態であることが判明しました。ヒートマップの作成が完了する前に、時折、ポピュレーションが発生していました(どちらもイベント駆動型です)。

ヒートマップを保持しているクラスが同期呼び出しを行って、ヒートマップがクリーンになった後にデータを入力するように、コードを作り直しました。

入力してくれてありがとう、それは私に頭痛を救った。:)

クリス

于 2012-07-26T14:57:08.390 に答える