8

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

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

这个类方法(JSONObjectWithData)线程安全吗?我可以确定吗?它写在文档的什么地方?

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

4

3 回答 3

1

我在这里有点猜测。

线程编程指南状态

不可变对象通常是线程安全的;一旦你创建了它们,你就可以安全地将这些对象传入和传出线程。

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

于 2013-03-19T08:59:25.367 回答
1

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

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

于 2015-07-17T14:38:02.210 回答
-1

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

于 2013-03-19T08:36:01.577 回答