I've already read through several explanation on the differences between atomic and nonatomic. Like in this link, it says:
With "atomic", the synthesized setter/getter will ensure that a whole value is always returned from the getter or set by the setter, regardless of setter activity on any other thread. That is, if thread A is in the middle of the getter while thread B calls the setter, an actual viable value -- an autoreleased object, most likely -- will be returned to the caller in A.
In nonatomic, no such guarantees are made. Thus, nonatomic is considerably faster than "atomic".
Nonatomic qualifier may cause access error when using setter and getter at the same time. Then what's the point of using it, although it's faster than atomic?