Когда вы смотрите на некоторый код Objective-C, вы часто видите свойства класса, определенные как неатомарные. Зачем? Это дает вам некоторое повышение производительности, когда вы не работаете с потоками, или есть какая-то другая причина?
nonatomic аксессоры быстрее, потому что они не должны блокироваться. Вот и все, что нужно сделать. Из документации :
nonatomic
Если вы не укажете nonatomic, то в среде с подсчетом ссылок синтезированный метод доступа get для свойства объекта использует блокировку и сохраняет и автоматически выпускает возвращаемое значение - реализация будет аналогична следующим образом: [_internal lock]; // lock using an object-level lock id result = [[value retain] autorelease]; [_internal unlock]; return result; Если вы укажете nonatomic, то синтезированный метод доступа к свойству объекта просто возвращает значение напрямую.
Если вы не укажете nonatomic, то в среде с подсчетом ссылок синтезированный метод доступа get для свойства объекта использует блокировку и сохраняет и автоматически выпускает возвращаемое значение - реализация будет аналогична следующим образом:
[_internal lock]; // lock using an object-level lock id result = [[value retain] autorelease]; [_internal unlock]; return result;
Если вы укажете nonatomic, то синтезированный метод доступа к свойству объекта просто возвращает значение напрямую.