关于多线程编程的一个简单问题:我有一个NSMutableArray实例变量,该变量由主线程读取并由另一个线程设置。我目前正在使用此:

@property (nonatomic, retain) NSMutableArray *locations;

但是我想我现在必须删除“nonatomic”指令吗?

最佳答案

如果创建一个新数组并将其分配给位置,则需要原子属性。

如果要从另一个线程添加/删除位置对象,则数组上的atomic属性不适用。各种NSMutable ...集合不是线程安全的,因为add/insert/remove方法的设计目的不是要从多个线程中调用。

看到这样的问题:NSMutableDictionary thread safety

更好的方法可能是让另一个线程向主线程发送要添加或删除的位置数组,以使更改仅在主线程上发生。

09-08 05:21