nonatomic 非原子属性 非线程安全,适合内存小的移动设备(手机,平板...)
atomic 原子属性(线程安全,但需要消耗大量资源)针对多线程设计的,为默认值,保证同一时间只有一个线程能够写入;本身就是一把自旋锁;单写多读,单个线程写入,多个线程读取
注意:当重写属性的get与set方法时需要在@implementation后添加:@synthesiae 属性名 = _属性名;
互斥锁与自旋锁对比
互斥锁:如果发现其他线程正在执行锁定代码,线程会进入休眠(就绪状态),等其他线程时间到打开锁后线程会被唤醒(执行)
自旋锁:如果发现其他线程正在锁定代码,线程会用死循环方式一直等待锁定的代码执行完毕,自旋锁更适合执行不好使代码;
注意:几乎所有UIKit提供的类都是线程不安全的,所有UI更新操作都在主线程上执行