が使用されるスレッドでマネージド コンテキストを作成する必要があります。NSOperation を使用する場合は、その init メソッドが呼び出し元と同じスレッドで呼び出されることに注意してください。したがって、キューの init メソッドでキューの管理対象オブジェクト コンテキストを作成しないでください。そうしないと、呼び出し元のスレッドに関連付けられます。代わりに、main (シリアル キューの場合) または start (同時キューの場合) でコンテキストを作成する必要があります。
http://goo.gl/6CMO4より
ConnectionDidLoading メソッド内:
ParseOperation *parseOperation = [[ParseOperation alloc] initWithData:self.earthquakeData];
[self.parseQueue addOperation:parseOperation];
[parseOperation release]; // once added to the NSOperationQueue it's retained, we don't need it anymore
メインスレッドで ConnectionDidiLoading が呼び出されています。ParseOperation::initWIthData メソッド内には、次のようなものがあります: (ParseOperation.m ファイルを参照)
// setup our Core Data scratch pad and persistent store
managedObjectContext = [[NSManagedObjectContext alloc] init];
[self.managedObjectContext setUndoManager:nil];
SeismicXMLAppDelegate *appDelegate = (SeismicXMLAppDelegate *)[[UIApplication sharedApplication] delegate];
[self.managedObjectContext setPersistentStoreCoordinator:appDelegate.persistentStoreCoordinator];
#
私の理解では、この managedObjectContext はまだメインスレッドで作成されています。
Apple のサンプル コードが正しくない可能性は非常に低いため、誰かが私の理解を明確にするか修正していただければ幸いです。