原子属性

1.原子属性是线程安全的atomic,但并不是绝对的安全 原子属性只是保护的set和get方法,比如array,他有add方法,所以对于数组来说,他就不能保证线程安全。

2.定义属性的时候如果什么都不写的话 那么定义的属性默认是atomic

3.定义属性的时候如果同时重写了set和get方法,那么就不会生成_属性,如果想要使用_属性,那么就执行

@synthesize name = _name

4.原子属性不能解决同时访问共享资源是因为它读和写还是分离的。他只保护了写的操作。

5.原子属性安全是因为他可以多读,但是同一时间只可以允许一个线程进行写入

6.atomic比较耗费性能,建议都使用nonatomic,尽量避免同时访问共享资源,如果避免不了的话,最好让后台去操作。

set方法

-(void)setname:(NSString *)name {

      利用互斥锁让同一时间只有一个线程可以写入

         @synchronized(self) {

          _name = name;

      }

}

get方法

-(NSString *)name {

             return _name;

}

你可能感兴趣的:(原子属性)