91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS中延時執行的幾種方式比較及匯總

發布時間:2020-09-30 08:40:52 來源:腳本之家 閱讀:896 作者:wide288 欄目:移動開發

前言

在開發過程中,我們有時會希望把一些操作封裝起來延遲一段時間后再執行。本文列舉了四種延時執行某函數的方法及其一些區別。假如延時1秒時間執行下面的方法。

- (void)delayMethod { NSLog(@"execute"); }

1.performSelector方法

這是iOS中常用的一種延遲執行方法.

   //不帶參數
   [self performSelector:@selector(delayDo:) withObject:nil afterDelay:1.0f];
   //帶參數
   [self performSelector:@selector(delayDo:) withObject:@"abc" afterDelay:1.0f];

此方式要求必須在主線程中執行,否則無效。

是一種非阻塞的執行方式,

暫時未找到取消執行的方法。

2.定時器:NSTimer

采用計時器的延遲方法

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];

此方式要求必須在主線程中執行,否則無效。

是一種非阻塞的執行方式,

可以通過NSTimer類的- (void)invalidate;取消執行。

3. sleep方式

[NSThread sleepForTimeInterval:1.0f]; [self delayMethod];

此方式在主線程和子線程中均可執行。

是一種阻塞的執行方式,建方放到子線程中,以免卡住界面

沒有找到取消執行的方法。

最好不要在主線程中使用,否則會卡住界面.

4.GCD方式

//在主線程延遲執行  
 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
   [self delayDo:@"GCD"];
   });
//在子線程延遲執行
   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   [self delayDo:@"Global-GCD"];
   });

此方式在可以在參數中選擇執行的線程。

是一種非阻塞的執行方式,

沒有找到取消執行的方法。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岑巩县| 泰和县| 左权县| 始兴县| 成安县| 侯马市| 南川市| 招远市| 静海县| 镇安县| 肇源县| 九寨沟县| 扶沟县| 和硕县| 项城市| 灵石县| 日照市| 渝北区| 墨脱县| 深州市| 运城市| 翁牛特旗| 连平县| 姚安县| 惠水县| 西华县| 商河县| 庆安县| 秦皇岛市| 昔阳县| 太白县| 汕尾市| 建平县| 莫力| 德保县| 新巴尔虎左旗| 内江市| 闽侯县| 行唐县| 武宁县| 中西区|