我对Objective-C比较新手。如果我有一个类属性,很可能会在诸如API调用之类的异步事件中进行修改,那么确保在另一个线程访问该属性时更改该属性不会导致崩溃的最佳方法是什么?
据我所知,我有两个选择:
1. NSLock + atomic属性
...但这样做似乎每次读写都要锁定该属性,这样就会使其原子性失效。
2. Nonatomic属性
我也可以将其设置为nonatomic,但然后我认为我必须在主线程上进行所有读写操作。是否有一种方法可以作为API调用的结果来完成?成功API响应后回调委托人是否在为该API调用打开的线程上,还是回到主线程上?如果在不同的线程上,我能否将其放回到主线程上?具体而言,我担心NSArray正在遍历它时被更改。
这样做的最佳方法是什么?
据我所知,我有两个选择:
1. NSLock + atomic属性
...但这样做似乎每次读写都要锁定该属性,这样就会使其原子性失效。
2. Nonatomic属性
我也可以将其设置为nonatomic,但然后我认为我必须在主线程上进行所有读写操作。是否有一种方法可以作为API调用的结果来完成?成功API响应后回调委托人是否在为该API调用打开的线程上,还是回到主线程上?如果在不同的线程上,我能否将其放回到主线程上?具体而言,我担心NSArray正在遍历它时被更改。
这样做的最佳方法是什么?