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

マネージド コンテンツはスレッド セーフではありません。メインスレッドでコードを実行するか、バックグラウンドで実行して、バックグラウンド スレッドの処理が完了したときに NSNotificationCenter を使用して UI のリロードを開始できます。

于 2013-03-19T08:36:01.577 に答える