nonatomic的内存管理语义是非原子性的,非原子性的操作本来就是线程不安全,而atomic的操作是原子性的,但并不意味着他就是线程安全的,它会增加正确的几率,能够更好的避免线程错误,但仍旧是不安全的。
atomic在set方法加了线程锁
nonatomic错误日志 :
malloc: *** error for object 0x7f986484c200: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug