类方法&线程安全(NSJSONSerialization)

时间:2013-03-19 08:25:18

标签: ios objective-c cocoa thread-safety

在我的iOS应用中,我正在后台线程中做一些工作(使用performSelectorInBackground)。在这个线程中,我使用NSJSONSerialization及其类方法来解析JSON字符串:

self.json = [NSJSONSerialization JSONObjectWithData:self.data options:0 error:nil];

此类方法(JSONObjectWithData)线程是否安全?我能确定吗?它在文档中写在哪里?

我知道实例方法通常不是线程安全的,除非文档说它们是。我是否可以说类方法是线程安全的,除非另有说明?

3 个答案:

答案 0 :(得分:1)

我在这里有点猜测。

Threading Programming Guide

  

不可变对象通常是线程安全的;一旦你创造了它们,你   可以安全地将这些对象传递给线程。

调用类方法意味着向类对象发送消息,类对象是不可变的。我的结论是,从不同的theads中调用类方法是安全的。

答案 1 :(得分:1)

我刚刚在Apple开发者论坛上发布了一个类似的问题。我得到的回应是NSJSONSerialization是线程安全的:

https://forums.developer.apple.com/thread/11229

答案 2 :(得分:-1)

托管内容不是线程安全的。您可以在主线程上运行代码或在后台运行代码,并在后台线程处理完毕后使用NSNotificationCenter开始重新加载UI。