MBProgressHUD 出現(xiàn)Main Thread Checker: UI API called on a background thread: -[UIApplication applic...

升級(jí)的iOS12系統(tǒng)后,Xcode在調(diào)試項(xiàng)目時(shí),如果遇到使用MBProgressHUD的彈框提示,就會(huì)出現(xiàn)

[reports] Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]

PID: 850, TID: 218915, Thread name: com.apple.CoreMotion.MotionThread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0

這樣的警告。同時(shí),tips在第一次彈出時(shí)也會(huì)阻塞頁面的滑動(dòng)流暢度,嚴(yán)重影響用戶體驗(yàn)。



出現(xiàn)原因:

升級(jí)到Xcode10以后,貌似多出了這么個(gè)東西,(以前可能也有,沒太注意。。)

Main Thread Checker。

image01

我們都知道,針對(duì)UI的操作必須在主線程執(zhí)行,如果沒有在應(yīng)該在主線程執(zhí)行的操作放在了?background thread里去,Xcode一般都會(huì)給個(gè)藍(lán)色字體的提示,并且在當(dāng)前頁面還會(huì)指出具體的問題代碼。

但是在使用MBProgressHUD 出現(xiàn)了上述問題,Xcode只是簡(jiǎn)單的在這個(gè)問題給個(gè)了警告,并未指出出問題的具體代碼。導(dǎo)致我花了很長(zhǎng)時(shí)間來定位出問題的位置。。。

image02





經(jīng)歷了相當(dāng)?shù)疤鄣牟檎叶ㄎ坏搅嗽?。就是下面注釋的語句導(dǎo)致的。

image03

其實(shí)這個(gè)方法的作用,是給MBProgressHUD 的tips 加一個(gè)視差效果,(不得不佩服,MBProgressHUD的作者真的想的很周到,但是具體的效果好像也不是很明顯。。。)

image04

在GitHub上,針對(duì)這個(gè)問題MBProgressHUD作者也給出了解決辦法如下:



最后的解決辦法:

注釋掉 這一句就好了。

[bezelView ?addMotionEffect:group];

或者勾選掉Main Thread Checker選項(xiàng)

MBProgressHUD的作者也給出了另一種方法:

將這個(gè)屬性設(shè)為NO

hud.defaultMotionEffectsEnabled = NO;




我是直接用了第一種方法,作者給出的方法試了,好像沒用,也可能是我使用過的姿勢(shì)不對(duì)。

附上一個(gè)鏈接,感興趣的去看看吧

Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState] · Issue #552 · jdg/MBProgressHUD · GitHub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容