在編寫通常的視圖控制器代碼時,我可以假設這隻會從單個事件循環線程中調用嗎?我需要什麼樣的類來使線程安全?涉及多個線程的常見情況是什麼?我何時需要擔心iOS應用程序中的線程安全問題?
回答
如果您正在編寫普通的UIViewController代碼,則無需擔心iOS中的線程安全問題。在iOS中,任何有關UI的消息都應該在主線程上運行。
如果你不在自己的背景中執行一些消息,通常你不必擔心線程,在大多數情況下,它總是在主線程中。
P.S.像Game Kit這樣的一些框架有時會在後臺執行消息,但不是關於UI,Apple的文檔會警告您確定消息是否在主線程上運行。
concurrency programming guide很好。以下是一些需要記住的重要事項。
- 您應該只從主線程更新UI。這可以讓你以微妙的方式...
- NSNotifications將在它們被觸發的線程中收到。所以如果你啓動一個線程並訂閱一個NSNotification來觸發一個UI動作,你應該在你得到它時檢查你的線程。如果它不在主線程上,請使用NSObject的performSelectorOnMainThread:withObject:waitUntilDone:在主線程上獲取它。
- 如果你正在繪製一個非UI的上下文,我相信核心圖形現在是線程安全的。 (我相信CATiledLayer會因此而做一些聰明的事情)
- 通常對於視圖控制器來說,唯一需要考慮的事件循環就是主線程上的循環。在另一個線程上創建自己的事件循環之前,請三思。
爲了確認,Core Graphics是線程安全的,並且CATiledLayer完成了它在多個後臺線程中的繪圖(如果您擁有單個核心CPU,則只有一個後臺線程)。 –
- 1. 我需要擔心閃存中的線程安全嗎?
- 2. 您何時需要擔心線程安全?
- 3. 我需要擔心我的應用程序中的時區嗎?
- 4. 我需要擔心Winforms應用程序中的全球字體嗎?
- 5. 爲什麼我必須擔心CPython中的線程安全性?
- 6. IOS 10寬色:我需要擔心嗎?
- 7. 線程安全應用程序中的線程安全
- 8. 我何時需要擔心ActiveRecord鎖定?
- 9. 我的IBackingStore需要線程安全嗎?
- 10. iPhone應用程序需要線程安全嗎?
- 11. 我是否需要擔心Mac應用程序開發中的內存泄漏?
- 12. 我應該擔心密碼安全嗎?
- 13. 我需要擔心IE7嗎?
- 14. 我需要擔心Flex/AIR代碼中的併發問題嗎?
- 15. 準備部署express js應用程序,我應該擔心哪些安全問題?
- 16. 需要線程安全Java中的MessageDigest
- 17. 線程安全擔保的boost ::侵入
- 18. Facebook應用程序,Iframe擔心(URL問題)
- 19. 我真的應該關心servlet中的線程安全問題操作類
- 20. 我是否需要擔心在foreach循環中的進程
- 21. 線程安全問題
- 22. 線程安全NSMutableArray問題
- 23. Facebook應用程序安全問題
- 24. 安全問題在WPF應用程序
- 25. HTML5應用程序安全問題
- 26. 單頁應用程序安全問題
- 27. 應用程序傳輸安全問題
- 28. XMPP Strophe.JS應用程序安全問題
- 29. 如果沒有靜態字段,我是否需要擔心線程安全的對象?
- 30. iOS應用程序與API交互的安全問題
一些繪圖代碼是多線程的,例如在多核CPU上運行時的CATiledLayer。 –