iOS 爲什麼必須在主線程中操作UI
- 之前面試時面試官問的問題,一直在找答案,今天在微信團隊的分享中看到了,Copy過來與大家分享
因爲UIKit不是線程安全的。試想下面這幾種情況:
兩個線程同時設置同一個背景圖片,那麼很有可能因爲當前圖片被釋放了兩次而導致應用崩潰。
兩個線程同時設置同一個UIView的背景顏色,那麼很有可能渲染顯示的是顏色A,而此時在UIView邏輯樹上的背景顏色屬性爲B。
兩個線程同時操作view的樹形結構:在線程A中for循環遍歷並操作當前View的所有subView,然後此時線程B中將某個subView直接刪除,這就導致了錯亂還可能導致應用崩潰。
iOS4之後蘋果將大部分繪圖的方法和諸如 UIColor 和 UIFont 這樣的類改寫爲了線程安全可用,但是仍然強烈建議講UI操作保證在主線程中執行。