你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 耗時線程處置處理小技巧

iOS 耗時線程處置處理小技巧

編輯:IOS開發綜合

如今的IOS是默許支持多線程的,有些操作比擬耗時,但這些耗時的線程不能阻塞主線程。因而需求在完成時,留意確保主線程的順暢,及時呼應用戶的交互。

1. 處置耗時的邏輯操作

比方停止圖像的緊縮和裁剪等耗CPU或GPU的操作時,可以將這些操作放在全局隊列中異步執行:

dispatch_async(dispatch_get_global_queue(0, 0), ^{
       //complex logic operation 
});

函數原型為:

dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

async標明異步運轉,block代表的是block操作義務,queue則是義務所處隊列.

2. 處置耗時的UI操作

2.1 網絡操作
有些需求與網絡交互的操作,在網絡前往前需求顯示一個loading的菊花,然後等候網絡前往,這時可以運用回調來處置。
比方:處置中的進程,定義為onProgressCallback回調,這個進程顯示loading的tip窗口,制止用戶交互;
處置完成,定義為completeCallback(錯誤或成功),隱藏tip,並給出提示,開啟用戶交互。
2.2 等候後面UI操作
另外,有時需求等候後面的UI操作完成,比方等候自動隱藏的提示tip 窗口封閉,再停止下一個UI操作,可以運用:

// wait for 1.2 seconds
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 1.2), dispatch_get_main_queue(), ^{
    // show statusbar
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
});

的辦法來停止。

dispatch_after();

辦法表示延遲執行。

DISPATCH_TIME_NOW
//Indicates a time that occurs immediately.

表示以後時間:

dispatch_get_main_queue()

取得主線程。

【iOS 耗時線程處置處理小技巧】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved