-[UIView setBackgroundColor:] must be used from main thread only

ArticleMain Thread Checker

Detect invalid use of AppKit, UIKit, and other APIs from a background thread.

檢測來自后臺線程的AppKit扶檐、UIKit和其他api的無效使用犀概。

Overview

The Main Thread Checker is a standalone tool for Swift and C languages that detects invalid usage of AppKit, UIKit, and other APIs on a background thread. Updating UI on a thread other than the main thread is a common mistake that can result in missed UI updates, visual defects, data corruptions, and crashes.

主線程檢查器是Swift和C語言的獨立工具油挥,用于檢測后臺線程上的AppKit喊递、UIKit和其他api的無效使用颁独。在主線程之外的線程上更新UI是一個常見的錯誤匣摘,它會導致UI更新丟失东帅、視覺缺陷霞赫、數據損壞和崩潰。

How the Main Thread Checker Works

At app launch, the Main Thread Checker dynamically replaces the implementations of methods that should only be called on the main thread with a version that prepends the check. Methods known to be safe for use on background threads are excluded from this check.
在應用程序啟動時置森,主線程檢查器會動態(tài)地用一個版本替換那些只能在主線程上調用的方法的實現斗埂,該版本會預先執(zhí)行檢查。已知對后臺線程安全使用的方法不包括在此檢查中凫海。
Note

Unlike other code diagnostic tools, the Main Thread Checker doesn't require recompilation, and can be used with existing binaries. You can run it on a macOS app without the Xcode debugger, such as on a continuous integration system, by injecting the dynamic library file located at
與其他代碼診斷工具不同呛凶,主線程檢查器不需要重新編譯,并且可以與現有的二進制文件一起使用行贪。通過注入位于的動態(tài)庫文件漾稀,您可以在macOS應用程序上運行它,而無需Xcode調試器建瘫,例如在持續(xù)集成系統(tǒng)上
/Applications/Xcode.app/Contents/Developer/usr/lib/libMainThreadChecker.dylib.

Performance Impact

The performance impact of the Main Thread Checker is minimal, with a 1–2% CPU overhead and additional process launch time of <0.1 seconds.
主線程檢查程序的性能影響是最小的崭捍,CPU開銷為1-2%,進程啟動時間為<0.1秒暖混。

Because of its minimal performance overhead, the Main Thread Checker is automatically enabled when you run your app with the Xcode debugger.
由于其最小的性能開銷缕贡,當您使用Xcode調試器運行應用程序時,將自動啟用主線程檢查器拣播。

Updating UI from a Completion Handler

Long-running tasks such as networking are often executed in the background, and provide a completion handler to signal completion. Attempting to read or update the UI from a completion handler may cause problems.
長時間運行的任務(如聯(lián)網)通常在后臺執(zhí)行晾咪,并提供一個完成處理程序來發(fā)出完成信號。試圖從完成處理程序讀取或更新UI可能會導致問題贮配。


lettask = URLSession.shared.dataTask(with: url) { (data, response,error)inifletdata = data {self.label.text ="\(data.count)bytes downloaded"http:// Error: label updated on background thread }}task.resume()

Solution

Dispatch the call to update the label text to the main thread.
將調用分派到主線程以更新標簽文本谍倦。


lettask = URLSession.shared.dataTask(with: url) { (data, response,error)inifletdata = data { DispatchQueue.main.async {// Correctself.label.text ="\(data.count)bytes downloaded"} }}task.resume()

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泪勒,隨后出現的幾起案子昼蛀,更是在濱河造成了極大的恐慌宴猾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叼旋,死亡現場離奇詭異仇哆,居然都是意外死亡,警方通過查閱死者的電腦和手機夫植,發(fā)現死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門讹剔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人详民,你說我怎么就攤上這事延欠。” “怎么了沈跨?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵由捎,是天一觀的道長。 經常有香客問我饿凛,道長狞玛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任笤喳,我火速辦了婚禮为居,結果婚禮上,老公的妹妹穿的比我還像新娘杀狡。我一直安慰自己,他們只是感情好贰镣,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布呜象。 她就那樣靜靜地躺著,像睡著了一般碑隆。 火紅的嫁衣襯著肌膚如雪恭陡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天上煤,我揣著相機與錄音休玩,去河邊找鬼。 笑死劫狠,一個胖子當著我的面吹牛拴疤,可吹牛的內容都是我干的。 我是一名探鬼主播独泞,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼呐矾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了懦砂?” 一聲冷哼從身側響起蜒犯,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤组橄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后罚随,有當地人在樹林里發(fā)現了一具尸體玉工,經...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年淘菩,在試婚紗的時候發(fā)現自己被綠了瓮栗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞄勾,死狀恐怖费奸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情进陡,我是刑警寧澤愿阐,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站趾疚,受9級特大地震影響缨历,放射性物質發(fā)生泄漏。R本人自食惡果不足惜糙麦,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一辛孵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赡磅,春花似錦魄缚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咆瘟,卻和暖如春嚼隘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袒餐。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工飞蛹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人灸眼。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓卧檐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親幢炸。 傳聞我的和親對象是個殘疾皇子泄隔,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容