У меня есть [self.persistentContainer performBackgroundTask:block]
, и блок в основном просто читает записи, загружает их на сервер и изменяет / сохраняет записи, чтобы отразить их статус.
Если я вызываю функцию несколько раз подряд, то несколько записей могут быть отправлены одновременно (так как performBackgroundTask:
создает новый фоновый контекст), как это может быть сделано одновременно.
Правильнее ли было бы получить один фоновый контекст и повторно использовать его через [self.persistentContainer newBackgroundContext]
? Таким образом, у нескольких вызовов не будет проблемы, упомянутой выше, поскольку я предполагаю, что операции теперь будут поставлены в очередь.
Я буду использовать это так: [self.backgroundContext performBlock:block]
.
Поскольку я не хочу, чтобы одновременно происходили множественные загрузки из-за дублированных загрузок, я хочу вот что:
если есть 4 вызова к performBlock:
, внутренне базовые данные backgroundContext обработают 1-й блок, ждут окончания записей, 2-й блок теперь выполняется (и не нашел записей) и завершается, то же самое для 3-го и 4-го вызовов.
Будут ли какие-либо проблемы, если так будет сделано? Или мое понимание неверно?