Atomic: A primitive operation that guarantees the setter/getter of these two methods. If more than one thread calls the setter at the same time, one thread does not appear before the all-setter statement, and the other thread starts to perform the setter condition, which is equivalent to the method's end and end lock.
nonatomic: (generally recommended) does not guarantee a primitive operation of the two methods, so you may be able to take something that is not complete setter/getter. For example, the setter method changes two member variables, and if you use Nonatomic, the getter may take a state that changes only one of the variables. The
key difference: Atomic is thread-safe, and nonatomic is thread insecure. It is best to use nonatomic if it is a single-threaded operation, because the latter is more efficient.
The difference between the nonatomic of Objective-c Grammar and atomic