Я использую 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
методы делегата вызываются автоматически. Следовательно, логика обновления пользовательского интерфейса срабатывает.
Теперь мой вопрос: нужно ли мне использовать main_queue
для -saveManagedObjectContext
? Должен ли я выполнять все операции с моим NSManagedObject
в main_queue
? Некоторые операции по обновлению NSManagedObject
могут занять 2-3 секунды. Пожалуйста, сообщите.