Атомные свойства НЕ являются потокобезопасными! Objective-C: атомарные, свойства, потоки и / или пользовательский установщик / получатель А из документации :
Свойства являются атомными по умолчанию, так чтоСинтезированные средства доступа обеспечивают надежный доступ к свойствам в многопоточной среде, то есть значение, возвращаемое из получателя или устанавливаемое через установщик, всегда полностью извлекается или устанавливается независимо от того, какие другие потоки выполняются одновременно.
Это НЕ означает, что они являются поточно-ориентированными.
Руководство по программированию параллелизма показывает, как реализовать различные виды блокировок.
Но чтобы ответить на ваш вопрос о том, безопасны ли они,проанализировать JSON и обновить вашу модель в фоновом режиме: да, это так.Но остальная часть вашего кода, который обращается к объектам модели, должна быть к этому подготовлена.Если вы обрабатываете уведомления о слиянии, с вами должно быть все в порядке, особенно если ваше приложение использует контроллеры извлеченных результатов.Если у вас есть пользовательский интерфейс, который не управляется извлеченными контроллерами результатов, пусть ваши контроллеры представления прослушивают соответствующие уведомления NSManagedObjectContext (т.е. NSManagedObjectContextObjectsDidChangeNotification) и действуют соответственно.Вы можете использовать это, чтобы увидеть, когда объект был вставлен, обновлен и т. Д., А затем обновите свой контроллер представления, повторно заполняя объект по его objectID.Поэтому, когда ваш json-анализ в фоновом режиме обновляет объекты модели, вы получаете уведомление о слиянии и слияние с контекстом объекта основного потока.Тогда ваши контроллеры вида увидят изменения в уведомлениях, которые они прослушивают, и заглянут в волшебный обновленный интерфейс.