第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

主隊(duì)列上的performSelectorOnMainThread和dispatch_async

主隊(duì)列上的performSelectorOnMainThread和dispatch_async

白衣非少年 2019-12-26 14:06:19
我在修改線(xiàn)程內(nèi)的視圖時(shí)遇到問(wèn)題。我試圖添加一個(gè)子視圖,但是顯示大約需要6秒鐘或更長(zhǎng)時(shí)間。我終于使它工作了,但我不知道它到底是怎么做到的。所以我想知道為什么它起作用以及以下方法之間的區(qū)別是什么://this worked -added the view instantlydispatch_async(dispatch_get_main_queue(), ^{    //some UI methods ej    [view addSubview: otherView];}//this took around 6 or more seconds to display[viewController performSelectorOnMainThread:@selector(methodThatAddsSubview:) withObject:otherView waitUntilDone:NO];//Also didnt work: NSNotification methods -  took also around 6 seconds to display//the observer was in the viewController I wanted to modify//paired to a method to add a subview.[[NSNotificationCenter defaultCenter] postNotificationName: @"notification-identifier" object:object];作為參考,在ACAccountStore類(lèi)的完成處理程序內(nèi)部調(diào)用了該方法。accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {            if(granted) {            //my methods were here            }}編輯:當(dāng)我說(shuō)它不起作用時(shí),我的意思是花了大約6秒鐘才能顯示我添加的視圖。
查看完整描述

3 回答

?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊

默認(rèn)情況下,-performSelectorOnMainThread:withObject:waitUntilDone:僅計(jì)劃選擇器以默認(rèn)運(yùn)行循環(huán)模式運(yùn)行。如果運(yùn)行循環(huán)處于另一種模式(例如跟蹤模式),則在運(yùn)行循環(huán)切換回默認(rèn)模式之前它不會(huì)運(yùn)行。您可以使用該變體來(lái)解決此問(wèn)題-performSelectorOnMainThread:withObject:waitUntilDone:modes:(通過(guò)傳遞您希望它在其中運(yùn)行的所有模式)。

另一方面,dispatch_async(dispatch_get_main_queue(), ^{ ... })一旦主運(yùn)行循環(huán)將控制流返回到事件循環(huán),就會(huì)運(yùn)行該塊。它不在乎模式。因此,如果您也不想關(guān)心任何模式,dispatch_async()可能是更好的選擇。


查看完整回答
反對(duì) 回復(fù) 2019-12-26
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

可能是因?yàn)閜erformSelectorOnMainThread:withObject:waitUntilDone:使用常見(jiàn)的運(yùn)行循環(huán)模式將消息排隊(duì)。根據(jù)Apple的《并發(fā)編程指南》,主隊(duì)列將把排隊(duì)的任務(wù)與應(yīng)用程序運(yùn)行循環(huán)中的其他事件進(jìn)行交錯(cuò)。因此,如果事件隊(duì)列中還有其他事件要處理,則調(diào)度隊(duì)列中的已排隊(duì)塊可以先運(yùn)行,即使它們是稍后提交的。


本文是performSelectorOnMainThreadvs. 的出色解釋dispatch_async,它也回答了上述問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2019-12-26
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

你試試PerformSelectorOnMainThread用waitUntilDone=YES


例如:


碼:


[viewController performSelectorOnMainThread:@selector(methodThatAddsSubview:) withObject:otherView waitUntilDone:YES];

我認(rèn)為這可能會(huì)解決問(wèn)題,因?yàn)闉槭裁碢erformSelectorOnMainThread需要這么長(zhǎng)時(shí)間才能做出回應(yīng)。


查看完整回答
反對(duì) 回復(fù) 2019-12-26
  • 3 回答
  • 0 關(guān)注
  • 1011 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)