В настоящее время я изучаю, как использовать основные данные в многопоточной среде;Сохранение NSManagedObjectContext с NSPrivateQueueConcurrencyType
поэтому я создал небольшой проект с двумя NSManagedObjectContext
: Главный NSManagedObjectContext
с NSMainQueueConcurrencyType
для чтения и его ребенок NSManagedObjectContext
с NSPrivateQueueConcurrencyType
для создания/обновления/удаления.
Он часто говорил, что экономя NSManagedObjectContext
с NSPrivateQueueConcurrencyType
должно быть сделано через performBlock:
так:
[context performBlock:^
{
Book *mutableBook = [self getMutableVersionOfBook:book];
[context deleteObject:mutableBook];
[context save:nil];
}];
Что произойдет, если performBlock:
опускается, например:
Book *mutableBook = [self getMutableVersionOfBook:book];
[context deleteObject:mutableBook];
[context save:nil];
ли сохранить, а затем произойти в потоке, вызванном сохранением? Что может случиться, если performBlock:
не используется?
Что случится, если вы попробуете? – Abizern
@Abizem сохраняет данные; Мне в основном интересно, каким образом данные сохраняются и почему это не рекомендуется. – MrJre
положите точку останова перед BooL * строка mutableBook и после строки deleteObject и посмотрите, создан ли новый поток (Xcode -> Left Side-> 6th tab-> click CPU-> см. Ниже потоки.вы узнаете, происходит ли это в newthread или нет. – santhu