С Язык программирования Objective-C , обязательное руководство:
Атомность
Этот атрибут можно использовать, чтобы указать, что методы доступа не являются атомарными.(Нет ключевого слова для обозначения атомарного.)
nonatomic
Указывает, что средства доступа не являются атомарными. По умолчанию методы доступа являются атомарными.
Свойства по умолчанию являются атомарными, поэтому синтезированные методы доступа обеспечивают надежный доступ к свойствам в многопоточной среде, то есть к значению, возвращаемому из метода получения или устанавливаемому черезсеттер всегда полностью извлекается или устанавливается независимо от того, какие другие потоки выполняются одновременно.Подробнее см. «Производительность и многопоточность».
Если указать retain
или copy
и не указать nonatomic
, то в среде с подсчетом ссылокСинтезированный метод доступа get для свойства объекта использует блокировку, сохраняет и автоматически высвобождает возвращаемое значение - реализация будет аналогична следующей:
[_internal lock]; // lock using an object-level lock
id result = [[value retain] autorelease];
[_internal unlock];
return result;
Если указать nonatomic
, синтезированный метод доступа для свойства объектапросто возвращает значение напрямую.