Безопасно ли выполнять операции сохранения над объектом NSManagedContext при использовании быстрого перечисления Objective C

Мне было интересно, если этот вид кода будет в порядке, чтобы использовать

NSManagedObjectContext *moc = [(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
for (NSDictionary *dict in objects) {
            Object *object = [NSEntityDescription insertNewObjectForEntityForName:@"object"
                                                     inManagedObjectContext:moc];
            // Populate model fields with appropriate dictionary keys
        }

Причина, по которой я спрашиваю, заключается в том, что вам не рекомендуется передавать ссылки на объект контекста управляемого объекта между потоками, и вам интересно, действительно ли это происходит здесь.

3 ответа

Решение

Быстрое перечисление с использованием for (object in collection) не имеет ничего общего с потоками. Весь этот код выполняется в одном потоке.

Вы используете один ManagedObjectContext, в вашем коде нет проблем с потоками. Вы делаете это правильно. Весь код является последовательным. Если вы хотите использовать несколько контекстов, каждый в потоке, вы должны позаботиться о многопоточности.

Если эта операция вставки является многопоточной, вам следует подумать о создании фонового NSManagedObjectContext для ее обработки, который слишком велик для публикации и на SO до него уже отвечали.

performBlock:

Другие вопросы по тегам