У меня есть приложение iphone/ipad с использованием Core Data. Данные предоставляются через различные вызовы веб-сервисов. Я использую механизм опроса, чтобы определить, когда каждый из вызовов службы должен быть сделан независимо друг от друга, чтобы обновлять информацию. Таким образом, может быть много фоновых потоков, обрабатывающих данные этих вызовов с использованием нескольких MOC. Для вложений и обновлений этот подход работает отлично. При попытке реализовать функцию удаления моя программа вылетает из строя. Кажется, что это вызвано, когда контекст в одном потоке удаляет управляемый объект, с которым работает другой поток, потому что удаленный объект был поврежден.Основные данные с несколькими фоновыми потоками
Я искал решения в Интернете, но не достиг чего-либо в частности. Должно ли удаляться в контекст основного потока? Как насчет поддержки одного потока и сопутствующего MOC в Singleton для выполнения всей обработки?
Любая помощь/руководство будет принята с благодарностью.
В методе AppDelegate didFinishLaunchingWithOptions: [[NSNotificationCenter defaultCenter] addObserver: автономный селектор: @selector (changesSaved :) Название: NSManagedObjectContextDidSaveNotification объекта: ноль];
Это вызывает:
- (Недействительными) changesSaved: (NSNotification *) примечание { [само performSelectorOnMainThread: @selector (changesSavedOnMainThread :) withObject: обратите внимание waitUntilDone: YES]; }
Наконец,
- (Недействительными) changesSavedOnMainThread: (NSNotification *) примечание { \t если ([примечание объект]!= __managedObjectContext) [__managedObjectContext mergeChangesFromContextDidSaveNotification: note]; } – flizit
Извините, этот комментарий выглядит ужасно. В любом случае, я обратился к этой обработке, чтобы теоретически сохранить основной поток как можно более свободным. Я определенно мог бы настроить, как влияет производительность на обработку в основном потоке, а также на фоне. – flizit