Я использую Grand Central Dispatch (GCD) в своем приложении, чтобы сделать тяжелый подъем. Приложение использует Core-Data для целей хранения данных. Здесь мой сценарий (наряду с соответствующим вопросом):
dispatch_queue_t main_queue = dispatch_get_main_queue();
dispatch_queue_t request_queue = dispatch_queue_create("com.app.request", NULL);
dispatch_async(request_queue, ^{
MyNSManagedObject *mObject = [self.fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
// …
// <heavy lifting>
// …
// …
// <update mObject>
// …
[self saveManagedObjectContext];
});
В результате [self saveManagedObjectContext]
, fetchResultsController
методы делегата вызываются автоматически. Следовательно, логика обновления UI срабатывает.
Теперь мой вопрос: мне нужно использовать main_queue
для -saveManagedObjectContext
? Должен ли я выполнять все операции на моем NSManagedObject
в main_queue
? Некоторые из операций, которые обновляют NSManagedObject
, могут занимать 2-3 секунды. Просьба сообщить.