通过不同的功能同时将对象调用到内存中

时间:2014-02-12 19:57:11

标签: ios objective-c multithreading concurrency

假设我有一个带有10个对象的MutableArray myArray。

每个对象都是一个包含10个不同子视图的视图。

现在假设我设置了两个NSTimers,或者我从服务器接收了一些通知。每个函数都有一个代码或一个调用myArray对象的循环。

现在假设在xxxxx的某个时刻,两个函数都调用了一个对象myTField,并且两个函数都尝试使用setText。请记住,时刻是相同的,它是否会导致内存泄漏问题或者它将如何影响对象,如果没有相应的值将被设置。

2 个答案:

答案 0 :(得分:2)

正如其他人所指出的那样,

UIView通常不打算从多个线程中使用。这个例子使用它是一种不好的类型。让我们解决这个问题,而不是假设数组包含NSMutableString s。我们还假设你的意图是说同时由不同的线程修改对象。

那说;除非为此目的声明对象是线程安全的,否则您必须假设它是竞争条件并且未定义的行为


注意到一些显而易见的事情:

  • 引用计数操作是原子操作(不是数据竞争)
  • 访问原子属性不是数据竞争

答案 1 :(得分:0)

由于您只能(或者当然应该)更新主线程上的文本字段,无论哪个运行第二个都将设置文本。应该没有泄漏问题。

如果您的代码在修改文本字段时未在主线程上运行,请将其更改为。