Objective C-将对象添加到数组中,同时改变该对象

时间:2016-01-29 16:10:30

标签: ios objective-c thread-safety nsarray

在目标C中,将对象添加到数组是否是线程安全的(此数组的所有处理/变异/枚举都在其自己的单个线程上发生),而对象本身可能会在不同的线程上发生变异? / p>

在向数组中添加对象时,我只是传入一个内存引用,对此实际对象的更改不会导致问题吗?或者将该对象同时在另一个线程上进行变更,以便将其添加到数组中导致崩溃?

由于

2 个答案:

答案 0 :(得分:2)

是的,这很安全。该数组仅关注存储对象的引用。对象本身的任何更改对于数组都是完全不可见的。当然,如果一个线程读取myObject = myArray [i],那么该线程必须意识到对象的内容可能随时发生变化。

答案 1 :(得分:-1)

是的,它是线程安全的。

  • 要创建线程安全数组或任何对象,必须使用属性列表“atomic”创建对象 通过这种方式,您将确保一个线程可以访问您的对象/阵列,并且应用程序不会崩溃。
  • 如果要在数组中存储对象引用,则变异对象值不会崩溃。由于数组指向对象,但所有对象必须是原子的,其存储在数组中。为了实现线程安全。