在我的iOS应用中,我正在后台线程中做一些工作(使用performSelectorInBackground
)。在这个线程中,我使用NSJSONSerialization及其类方法来解析JSON字符串:
self.json = [NSJSONSerialization JSONObjectWithData:self.data options:0 error:nil];
此类方法(JSONObjectWithData
)线程是否安全?我能确定吗?它在文档中写在哪里?
我知道实例方法通常不是线程安全的,除非文档说它们是。我是否可以说类方法是线程安全的,除非另有说明?
答案 0 :(得分:1)
我在这里有点猜测。
不可变对象通常是线程安全的;一旦你创造了它们,你 可以安全地将这些对象传递给线程。
调用类方法意味着向类对象发送消息,类对象是不可变的。我的结论是,从不同的theads中调用类方法是安全的。
答案 1 :(得分:1)
我刚刚在Apple开发者论坛上发布了一个类似的问题。我得到的回应是NSJSONSerialization是线程安全的:
答案 2 :(得分:-1)
托管内容不是线程安全的。您可以在主线程上运行代码或在后台运行代码,并在后台线程处理完毕后使用NSNotificationCenter开始重新加载UI。