Какао неатомные свойства - PullRequest
1 голос
/ 02 июня 2010

Когда вы смотрите на некоторый код Objective-C, вы часто видите свойства класса, определенные как неатомарные. Зачем? Это дает вам некоторое повышение производительности, когда вы не работаете с потоками, или есть какая-то другая причина?

1 Ответ

5 голосов
/ 02 июня 2010

nonatomic аксессоры быстрее, потому что они не должны блокироваться. Вот и все, что нужно сделать. Из документации :

Если вы не укажете nonatomic, то в среде с подсчетом ссылок синтезированный метод доступа get для свойства объекта использует блокировку и сохраняет и автоматически выпускает возвращаемое значение - реализация будет аналогична следующим образом:

[_internal lock]; // lock using an object-level lock
id result = [[value retain] autorelease];
[_internal unlock];
return result;

Если вы укажете nonatomic, то синтезированный метод доступа к свойству объекта просто возвращает значение напрямую.

...