Grand Central Dispatch (GCD) с CoreData

Я использую 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 секунды. Пожалуйста, сообщите.

22
задан Mustafa 16 September 2011 в 00:06
поделиться