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;
}