在声明属性的时候,经常会用到nonatomic,如果没有用这个关键字的话,那么在程序自动创建“设值方法”和“读值方法”的时候,就会把self作为一个mutex,从而保证了原子性:
@synchronized(self){
……
}
它把代码包含在了@synchronize中,并以self作为mutex。这就意味着这段代码在执行的过程中,其他以self作为mutex的代码就无法执行了,这样保证了数据的完整性。如果程序中只有一个main thread,那么就可以把所有的成员变量都声明为nonatomic。对于UI控件来说,最好也加上nonatomic,因为他们也基本只会在主线程中更新。