0

グーグル検索はこれについてまったく何も返さないので、これはロングショットです。場合によっては、さらに調査する価値がある場合は十分ですが、いつ、またはどのように正確に発生するかを追跡できるほど十分ではない場合があります。 を呼び出すと、次の例外が発生しsave:ますNSManagedObjectContext

-[_NSObjectID_48_0 _stateFlags]: unrecognized selector sent to instance 0x8675570

context は、 typeNSPrivateQueueConcurrencyTypeのメイン コンテキストの子であるtype の子コンテキストNSMainQueueConcurrencyTypeです。

スタック トレース以外の情報はありません。 ここに画像の説明を入力

暗号学者はスタック トレースから何かを作成して、問題の原因について考えられるアイデアを思いつくことができますか?

4

3 に答える 3

6

これと同じ問題に遭遇しました。NSManagedObjectContext::reset の呼び出しが原因でした。リセットは、リセットが呼び出されたコンテキストに属するすべての NSManagedObjects を無効にします。無効化された NSManagedObject のインスタンスを引き続き使用すると、予期しない結果が生じる可能性があります。これは、予想外の結果の 1 つです。

于 2012-09-17T20:14:36.127 に答える
3

_stateFlagsログ メッセージは、何らかの理由で のプロパティ/メソッドを探していることを示しています。その_NSObjectID_48_0うちの 1 つはプライベート API で、もう 1 つはプライベート クラスです。

のクイック実行

class-dump /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData

は、(他の場所の中でも)_stateFlagsのプライベート API であることを示しているようNSManagedObjectです。Mac で名前が付けられたプライベート クラスへの参照が見つかりませんが_NSObjectID_48_0、名前だけに基づいてNSManagedObjectID.

これはロングショットですが、どこかの時点で予期されていたNSManagedObjectID場所を通過したのではないかと思いますか? NSManagedObjectへの明示的な強制のためにコードを grep しても害はありませんNSManagedObject

別の犯人は、NSManagedObjectID を弱く型付けされたデータ構造 (私が見ている辞書/配列/セット) に挿入している可能性があります。

于 2012-08-25T01:48:54.640 に答える
0

今年の WWDC で、この同じ問題について Xcode のエンジニアと話し合いました。デバッガーでこの例外が発生すると、オブジェクトについて何もわかりません。しかし、コンソール アプリのクラッシュ ログを見ると、セレクターへの応答に失敗したオブジェクトが含まれています [これは正しいと思います]。

デバッガーを実行していないときにアプリをクラッシュさせる必要があるため、システムがクラッシュを処理します。

電話を同期します。

コンソール ~/Library/Logs/CrashReporter/MobileDevice/ を開き、クラッシュ レポートを見つけて、レポートを確認します。これについてバグを入力するように言われました-lldbは同じレベルの詳細を提供する必要があります-そして私はそうしました!

これがお役に立てば幸いです。

于 2012-08-24T20:56:43.967 に答える