2012-01-27 11 views
9

は時々私のアプリはちょうど次のコードでハングします:それは常にちょうど時々、ハングしないハング割引:何らかの理由

NSError *error; 
if (![self.managedObjectContext save:&error]) { 
    NSLog(@"Couldn't save: %@", [error localizedDescription]); 
} 

。私がすべての例外を壊した場合、Xcodeはセーブコールを破りますが、ブレークポイントをオフにすると、永久にハングするだけでクラッシュすることはありません。

アイデア?

+0

カスタム管理オブジェクトの検証はありますか?デバッガの一時停止ボタンを押した場合のスタックトレースとは何ですか? – Costique

+1

2つ以上のスレッドからMOCにアクセスしますか? –

+1

それはそれでした!あるスレッドで別のスレッドからアクセスするよりもコンテキストを作成しました。今、私は別のスレッドで新しいコンテキストを作成し、それは動作しているようです。ありがとう!私はそれを受け入れられたものとしてマークすることができますので、これを回答として投稿してください。 – edc1591

答えて

6

ManagedObjectContextを使用しているものを掛けることは、デッドロックの兆候です。 NSLocking protocolを使用するか、スレッドごとに新しいMOCを作成し、synchronize themを新規作成してください。

アップルからのもう1つの有用なドキュメント - >Concurrency with Core Data

-3

NSError *エラーをnilに設定しましたか?

関連する問題