【发布时间】:2016-04-27 11:11:17
【问题描述】:
我有一个 iOS 结构,我从底层类中获取回调。 此回调对 NSMutablearray 进行更改。
同时,我有一个 NSTimer,它对一个方法进行回调,该方法对同一个 NSMutable 数组进行更改。
如果回调“冲突”与 NSMutablearray 一起使用,我会看到一个潜在的问题。
我不知道如何处理这个问题。 NSLock 可以解决问题还是我应该将我的 NSMutablearray 实例化为原子的?
【问题讨论】:
-
你在使用多线程吗?如果不是,则在其他代码完成之前,计时器不会触发。直到您的代码下次返回并访问事件循环时,计时器才会触发。
-
无论您做什么,请记住,单独锁定可能无法解决您的所有问题,即即使对数组的每次访问都被锁定,这也可能不足以使其成为线程安全的。快速示例:需要多次访问数组的较长操作,但数组可能在两者之间发生了变化。