在Objective-C中,您可以区分原子和非原子属性:
@property (nonatomic, strong) NSObject *nonatomicObject;
@property (atomic, strong) NSObject *atomicObject;
Run Code Online (Sandbox Code Playgroud)
根据我的理解,您可以安全地读取和写入从多个线程定义为原子的属性,而同时从多个线程编写和访问非原子属性或ivars可能导致未定义的行为,包括错误的访问错误.
所以如果你在Swift中有这样的变量:
var object: NSObject
Run Code Online (Sandbox Code Playgroud)
我可以安全地并行读取和写入此变量吗?(不考虑这样做的实际意义).
据我所知,volatile通常用于防止在某些硬件操作期间出现意外的编译优化.但是volatile应该在属性定义中声明哪些场景让我感到困惑.请举几个有代表性的例子.
谢谢.