如何阻止NSSet在其他地方枚举时发生变异?

时间:2014-05-22 00:08:39

标签: ios multithreading cocoa-touch enumeration

我有一个NSMutableSet个对象,我在主线程的几个点上发生变异。有时会在后台线程上枚举此集合。如果没有使用一堆布尔值来管理状态,是否有一个很好的方法可以使任何突变等待,如果该集合当前是枚举的吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

NSMutableSet不是线程安全的。你不能破解它是线程安全的。

如果你想要一个不会在后台变异检查的副本,那么在主队列上取一个copy并将其传回去。它会比任何其他方法快得多。

否则,您必须在互斥锁中包含对它的所有访问。 @synchronize设置本身将是最直接的方式。