通常のビューコントローラコードを記述するとき、これは単一のイベントループスレッドからのみ呼び出されると仮定できますか?どのようなクラスのスレッドセーフな必要がありますか?複数のスレッドが関与する通常の状況は何ですか?iOSアプリケーションのスレッドセーフについて心配する必要はいつですか?
答えて
通常のUIViewControllerコードを記述している場合は、iOSのスレッドセーフについて心配する必要はありません。 iOSでは、メインスレッドでUIに関するメッセージが実行されているはずです。
自分でバックグラウンドでメッセージを実行しない場合は、通常はスレッドを心配する必要はありません。ほとんどの場合、スレッドは常にメインスレッドになります。
P.S. Game Kitのようなフレームワークの中には、バックグラウンドでメッセージを実行するものもありますが、それはUIに関するものではなく、メッセージがメインスレッドで実行されているかどうかをAppleが確認するよう警告します。
Concurrency Programming Guideが役に立ちます。
concurrency programming guideが良好です。ここに留意すべきいくつかの非常に重要なことがあります。
- メインスレッドのみからUIを更新する必要があります。これは微妙な方法であなたを得ることができます...
- NSNotificationは、それらが解雇されたスレッドで受信されます。したがって、スレッドを起動してNSNotificationに登録してUIアクションをトリガーする場合は、取得したスレッドを確認する必要があります。メインスレッドにない場合は、NSObjectのperformSelectorOnMainThread:withObject:waitUntilDone:をメインスレッドで使用します。
- 非UIコンテキストに描画を行っている場合は、コアグラフィックスがスレッドセーフになっていると思います。 (私はCATiledLayerがこれによりいくつかの巧妙なことをすると信じています)
- 一般的には、ビューコントローラの場合、メインスレッド上で考えるべきイベントループがあります。別のスレッドで独自のイベントループを作成する前に、2回考えます。
ただ、Core Graphicsはスレッドセーフであり、CATiledLayerはすべて複数のバックグラウンドスレッド(1つのコアCPUを持っている場合はバックグラウンドスレッドは1つ)で描画します。 –
- 1. NSUserDefaultsの衝突について心配する必要がありますか?
- 2. このエラーログについて心配する必要がありますか?
- 3. ActiveRecordのロックについてはいつ心配する必要がありますか?
- 4. 私はこれについて心配すべきですか?
- 5. フラッシュのスレッドの安全性について心配する必要はありますか?
- 6. Tomcat Spring Beanとの並行性について心配する必要はありますか?
- 7. キューブサイズの出力について心配ですか?
- 8. Checkstyle:なぜ開発者としてそれについて心配する必要がありますか?
- 9. ウェブサイトの偽アカウント/ログインについて心配する必要がありますか?
- 10. ASP.NET MVC 3.コンテナの廃棄について心配する必要がありますか?
- 11. MySQLデータベースの負荷について心配する必要がありますか?
- 12. Macのアプリケーション開発でメモリリークが心配する必要はありますか?
- 13. ScriptManager/ScriptManagerProxyはいつ必要ですか?
- 14. Disposeはいつ必要ですか?
- 15. "typename"キーワードはいつ必要ですか?
- 16. dynamic_castはいつ必要ですか?
- 17. LINQ(クエリ言語)のアップグレードパスについて心配する必要があります
- 18. いつMSVCRTの再配布可能ファイルが必要ですか?
- 19. DirectShowフィルタの共有状態をロックすることについて、いつ心配する必要がありますか?
- 20. stdafx.h:いつ必要なのですか?
- 21. 3つのボタンを4つのボタンの上に配置するにはどうすればいいですか?私は4つのボタンの中心行上記3つのボタンの中心行レイアウトする必要
- 22. モバイルアプリでスパムを心配する必要はありますか?
- 23. QThreadStorageを使用したスレッドセーフについてについて
- 24. iPhoneアプリケーション用のC++サーバーについてのアドバイスが必要
- 25. デュアル定義のVBS機能について心配すべきですか?
- 26. スレッドセーフについての質問
- 27. 再帰についての説明が必要ですか?
- 28. iOSデベロッパー向けのウェブサービスについて知るには、どのようなリソースが必要ですか?
- 29. 自分で何かを中断しないとInterruptedExceptionsについて心配する必要はありますか?
- 30. ライセンスキーアルゴリズムについてのアイデアが必要
マルチコアCPUで実行されている場合、CATiledLayerなどの一部の描画コードがマルチスレッドです。 –