views:

173

answers:

1

When you look at some Objective-C code, you often see class properties defined as non-atomic. Why? Does it give you some performance boost when you're not working with threads, or is there some other reason?

+4  A: 

nonatomic accessors are faster because they don't have to lock. That's about all there is to it. From the documentation:

If you do not specify nonatomic, then in a reference counted environment a synthesized get accessor for an object property uses a lock and retains and autoreleases the returned value—the implementation will be similar to the following:

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

If you specify nonatomic, then a synthesized accessor for an object property simply returns the value directly.

Carl Norum
Thanks for such a quick answer. I knew before how nonatomic properties work, I just didn't know the benefit of using them :-)
Jakub Lédl