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
2010-06-02 18:22:38
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
2010-06-02 18:51:42