GCD與runModalForWindow

問題:

在GCD的dispatch_main_queue上runModel窗口會(huì)阻塞UI磨镶,定時(shí)器空免,動(dòng)畫等。

解決方案:

一般會(huì)使用這種方式來解決:

dispatch_async(dispatch_get_main_queue(), ^{

[self performSelectorOnMainThread:@selector(showAlert:) withObject:errorMsg waitUntilDone:NO];

或者

? ? ? ? ? ? ? [self performSelector:@selector(showAlert:) withObject:errorMsg afterDelay:0.1];

});

注意:

[self performSelector:@selector(showAlert:) withObject:errorMsg afterDelay:0.1];

使用這種方式時(shí),如果是在模態(tài)下墓卦,CGD回調(diào)中runModel彈出alter掷贾,必須先關(guān)掉之前的那個(gè)模態(tài)睛榄,再彈出新模態(tài)。否則第二次的模態(tài)不會(huì)彈出想帅,只會(huì)在第一個(gè)模態(tài)關(guān)掉后才彈出场靴。waitUntilDone:NO不會(huì)有這種情況。

原因:

runModalForWindow蘋果官網(wǎng)解釋是:打開一個(gè)模態(tài)事件循環(huán)港准,只處理該模態(tài)窗口下的事件旨剥,定時(shí)器等。在主線程中打開模態(tài)窗口只會(huì)影響非keyWindow的事件浅缸,但不影響主線程的UI操作轨帜。

GCD serial queues?是不可重入的,而runloop是可重入的衩椒。也就是說在主線程執(zhí)行一個(gè)block時(shí)蚌父,在該block執(zhí)行完成前哮兰,不會(huì)再次執(zhí)行另外一個(gè)派發(fā)到主線程的block。正常情況下runModal只會(huì)阻塞非keywindow的事件苟弛,但其他UI操作(更新Label值喝滞,動(dòng)畫效果不影響)。但如果在GCD dispatch_main_queue中runmModel窗口膏秫,就會(huì)阻塞整個(gè)主線程的UI事件(整個(gè)界面靜止了)右遭。這是因?yàn)橹骶€程的UI操作等待dispatch_main_queue的執(zhí)行完畢,而dispatch_main_queue又被runModel阻塞了缤削。

有人說了狸演,主線程阻塞了,為什么界面沒轉(zhuǎn)菊花僻他?runModel阻塞和線程阻塞不同宵距,前者阻塞非keyWindow上的關(guān)聯(lián)事件,后者阻塞整個(gè)線程的執(zhí)行吨拗,界面會(huì)轉(zhuǎn)菊花满哪。

通過解決方案也能說明,dispatch on the main queue isn’t the same as?performSelectorOnMainThread 劝篷。因?yàn)楹笳呤腔趓unloop的哨鸭。

link:

https://www.thecave.com/2015/08/10/dispatch-async-to-main-queue-doesnt-work-with-modal-window-on-mac-os-x/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娇妓,隨后出現(xiàn)的幾起案子像鸡,更是在濱河造成了極大的恐慌,老刑警劉巖哈恰,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件只估,死亡現(xiàn)場離奇詭異,居然都是意外死亡着绷,警方通過查閱死者的電腦和手機(jī)蛔钙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荠医,“玉大人吁脱,你說我怎么就攤上這事”蛳颍” “怎么了兼贡?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娃胆。 經(jīng)常有香客問我遍希,道長,這世上最難降的妖魔是什么缕棵? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任孵班,我火速辦了婚禮,結(jié)果婚禮上招驴,老公的妹妹穿的比我還像新娘篙程。我一直安慰自己,他們只是感情好别厘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布虱饿。 她就那樣靜靜地躺著,像睡著了一般触趴。 火紅的嫁衣襯著肌膚如雪氮发。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天冗懦,我揣著相機(jī)與錄音爽冕,去河邊找鬼。 笑死披蕉,一個(gè)胖子當(dāng)著我的面吹牛颈畸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播没讲,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼眯娱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爬凑?” 一聲冷哼從身側(cè)響起徙缴,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘁信,沒想到半個(gè)月后于样,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潘靖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年百宇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秘豹。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡携御,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出既绕,到底是詐尸還是另有隱情啄刹,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布凄贩,位于F島的核電站誓军,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏疲扎。R本人自食惡果不足惜昵时,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一捷雕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壹甥,春花似錦救巷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溯职,卻和暖如春精盅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谜酒。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工叹俏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僻族。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓她肯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹰贵。 傳聞我的和親對象是個(gè)殘疾皇子晴氨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,103評論 1 32
  • 1.設(shè)計(jì)模式是什么? 你知道哪些設(shè)計(jì)模式碉输,并簡要敘述籽前? 設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn),就是用比較成熟的邏輯去處理某一種類...
    司馬DE晴空閱讀 1,295評論 0 7
  • 1.設(shè)計(jì)模式是什么? 你知道哪些設(shè)計(jì)模式阻荒,并簡要敘述挠锥?設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn),就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,153評論 0 12
  • 設(shè)計(jì)模式是什么侨赡? 你知道哪些設(shè)計(jì)模式蓖租,并簡要敘述? 設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn)羊壹,就是用比較成熟的邏輯去處理某一種類型的...
    iOS菜鳥大大閱讀 708評論 0 1
  • 好好整理你的家—— 伯特·海靈格 “ 好好整理你的家!” 這句話是什么意思蓖宦?它表示你把東西通通井然有序地放好,于是...
    60723421d430閱讀 375評論 0 0