На самом деле я не знаю, но так как никто еще не ответил.
Не поточно-ориентированный не является поточно-ориентированным.Представьте, что программисты Core Data поместили неэкспонированную переменную экземпляра в NSManagedObjectContext numberOfObjectsLoaded
.В потоке A вы получаете доступ к отношению управляемого объекта foo.bar
.В потоке B вы вносите изменения в какой-то совершенно не связанный объект baz.number = 14
.И foo, и baz являются ошибками.Они загружаются.Оба потока пытаются выполнить строку кода
numberOfObjectsLoaded += 1
Но поток A читает numberOfObjectsLoaded, получает 77, затем переключение контекста.Поток B также читает 77, добавляет 1, присваивает 78. Возвращается к потоку A. Он добавляет 1 к 77, то есть то, что он читает, получает 78, а также назначает 78 для numberOfObjectsLoaded.NumberOfObjectsLoaded должно иметь 79, но имеет 78. Это несоответствие приведет к неожиданным ошибкам и, возможно, в конечном итоге к аварийному завершению.Это произойдет только, может быть, 1/1000 раз, когда вы запустите вашу программу, и, возможно, ничего плохого не будет видно через несколько минут после того, как произошла настоящая ошибка.Очень трудно отлаживать.
Следуй их советам и не пытайся.