升級(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。

我們都知道,針對(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í)間來定位出問題的位置。。。

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

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

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

最后的解決辦法:
注釋掉 這一句就好了。
[bezelView ?addMotionEffect:group];
或者勾選掉Main Thread Checker選項(xiàng)
MBProgressHUD的作者也給出了另一種方法:
將這個(gè)屬性設(shè)為NO
hud.defaultMotionEffectsEnabled = NO;
我是直接用了第一種方法,作者給出的方法試了,好像沒用,也可能是我使用過的姿勢(shì)不對(duì)。
附上一個(gè)鏈接,感興趣的去看看吧