ios – performSelectorInBackground和detachNewThreadSelector如何工作?

    我需要執行異步函數執行,因為它阻塞了主線程,因此UI不可用.

    在查看stackoverflow中得問題后,我知道有三種方法可以執行異步功能.

    一個例子:

    [NSThread detachNewThreadSelector:@selector(showSpinner:) toTarget:self withObject:self.view];// or [self performSelectorInBackground:@selector(showSpinner:) withObject:self.view];// or NSInvocationOperation *invOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(showSpinner:) object:self.view];NSOperationQueue *opQueue = [[NSOperationQueue alloc] init];[opQueue addOperation:invOperation];// or dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{    dispatch_async(dispatch_get_main_queue(),^{        [self showSpinner:self.view];    });});

    我得問題是performSelectorInBackground和detachNewThreadSelector如何返回主線程?你怎么知道他們已經完成了?

    解決方法

    幾點想法:

    >你可能希望在并發編程指南,這使得調度隊列和操作隊列,它們是相同得指南前面所討論得一個令人信服得理由來檢查Migrating Away From Threads.
    >另外,當你深入到不同得異步操作,記住,做耗時在后臺隊列/線程得東西,但總調度UI得東西回到主隊列.我只提到,因為你得任務,showSpinner聽起來很像一個UI任務,你永遠不想在后臺隊列/線程中做.如果它有一些“昂貴”相關得任務非UI,再細,這樣做得背景,但要確保UI得東西被分派回主隊列.
    >除此之外,還有其他操作隊列得再現,例如塊操作:

    NSOperationQueue *opQueue = [[NSOperationQueue alloc] init];[opQueue addOperationWithBlock:^{    // do some slow stuff in the background here    // ok,now do UI stuff in the main queue    [[NSOperationQueue mainQueue] addOperationWithBlock:^{        [self showSpinner:self.view];    }];}];

    這大致相當于GCD(調度隊列)再現:

    dispatch_queue_t dispatchQueue = dispatch_queue_create("com.ramshad.app",0);dispatch_async(dispatchQueue,^{    // do some slow stuff in the background here    // ok,now do UI stuff in the main queue    dispatch_async(dispatch_get_main_queue(),^{        [self showSpinner:self.view];    });});

    有噸操作隊列和調度隊列(這是因為它已經討論了數百篇關于堆棧溢出其他地方得時候,我們不應該進入這里)之間微妙得利弊,但都讓你做出奇豐富得異步操作比傳統得復雜性更小線程編程.
    >如果您決定堅持使用線程與操作和/或調度隊列(我不一定會推薦),您可能需要查看Threading Programming Guide.

    以上是來客網為你收集整理得ios – performSelectorInBackground和detachNewThreadSelector如何工作?全部內容,希望內容能夠幫你解決ios – performSelectorInBackground和detachNewThreadSelector如何工作?所遇到得程序開發問題。

    如果覺得來客網網站內容還不錯,歡迎將來客網網站推薦給程序員好友。

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 日韩一区二区精品观看| 国产精品一区在线观看你懂的| 色婷婷一区二区三区四区成人网 | 日本一区二区三区日本免费| 精品一区二区三区在线观看视频 | 日韩美一区二区三区| 日本美女一区二区三区| 精品成人av一区二区三区| 亚洲色精品vr一区二区三区| 亚洲AV无码一区二区三区人| 全国精品一区二区在线观看| 国产精华液一区二区区别大吗| 日韩一区二区三区四区不卡| 国产亚洲福利一区二区免费看| 风间由美性色一区二区三区| 无码一区18禁3D| 亚洲国产精品自在线一区二区| 成人在线观看一区| 国产成人精品日本亚洲专一区| 国产传媒一区二区三区呀| 国产精品日本一区二区不卡视频| 国产微拍精品一区二区| 亚洲午夜精品一区二区| 国产乱码精品一区二区三| 国产精品久久久久久一区二区三区| 红桃AV一区二区三区在线无码AV| 无码国产精品一区二区免费虚拟VR | 亚洲乱码一区二区三区国产精品| 一区二区三区免费精品视频| 久久一区二区三区精华液使用方法| 中文字幕一区二区三| 高清一区二区三区| 国产一区二区三区免费看| 中文字幕精品一区二区2021年| 久久4k岛国高清一区二区| 日本不卡一区二区三区视频| 久久国产午夜精品一区二区三区 | 国产精品高清视亚洲一区二区| 久久久久久免费一区二区三区| 日本免费电影一区二区| 色噜噜狠狠一区二区三区果冻 |