天天看點

iOS 為什麼必須在主線程中操作UI

iOS 為什麼必須在主線程中操作UI

  • 之前面試時面試官問的問題,一直在找答案,今天在微信團隊的分享中看到了,Copy過來與大家分享

因為UIKit不是線程安全的。試想下面這幾種情況:

兩個線程同時設定同一個背景圖檔,那麼很有可能因為目前圖檔被釋放了兩次而導緻應用崩潰。

兩個線程同時設定同一個UIView的背景顔色,那麼很有可能渲染顯示的是顔色A,而此時在UIView邏輯樹上的背景顔色屬性為B。

兩個線程同時操作view的樹形結構:線上程A中for循環周遊并操作目前View的所有subView,然後此時線程B中将某個subView直接删除,這就導緻了錯亂還可能導緻應用崩潰。

iOS4之後蘋果将大部分繪圖的方法和諸如 UIColor 和 UIFont 這樣的類改寫為了線程安全可用,但是仍然強烈建議講UI操作保證在主線程中執行。