2015-09-12 2 views
3

Я изучаю, как использовать MagicalRecord для управления CoreData, существует два метода MR_saveToPersistentStoreWithCompletion и MR_saveToPersistentStoreAndWait. Посмотрите на комментарии, кажется, что разница заключается в том, что первая сохраняет изменения асинхронно, а более поздняя - синхронно.В чем разница между методом MR_saveToPersistentStoreWithCompletion и методом MR_saveToPersistentStoreAndWait в MagicalRecord

Так это единственная разница между ними? Как они работают? И в чем разница между асинхронным и синхронным сохранением данных?

Я изучил их исходный код, но не могу полностью понять, поскольку я его начинаю, так может кто-нибудь помочь объяснить это? Спасибо.

ответ

1

Асинхронное сохранение осуществляется внутри защиты performBlock, а синхронное сохранение осуществляется внутри защиты performBlockAndWait.

Асинхронное сохранение будет немедленно возвращено, и сохранение произойдет в фоновом потоке. Если это контекст главной очереди, сохранение произойдет некоторое время в будущем после завершения текущей итерации runloop. После завершения сохранения блок кода, переданный в качестве обработчика завершения, вызывается, чтобы вы знали, что сохранение завершено.

Синхронное сохранение произойдет до возврата вызова метода. Таким образом, когда метод вернулся, вы знаете, что все работы по сохранению завершены или возникла ошибка.

Для получения более подробной информации вы должны посмотреть на Core Data documentation на параллелизм.

+0

Спасибо за ваш ответ. Теперь это ясно. Я прочитаю документацию по основным данным. – yuying