麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:41:46
字體:
來源:轉載
供稿:網友

前言

在開發過程中,我們有時會希望把一些操作封裝起來延遲一段時間后再執行。本文列舉了四種延時執行某函數的方法及其一些區別。假如延時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"];   });

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

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

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

總結

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片在哪看 | 黄a大片 | 狠狠干天天操 | 青青草成人av | 激情久久精品 | 国产精品久久99精品毛片三a | 成码无人av片在线观看网站 | 日本黄色免费播放 | 18被视频免费观看视频 | jj视频在线播放 | 一级免费黄色免费片 | 爽爽淫人综合网网站 | 免费一级毛片电影 | 国产外围在线 | 最新中文字幕第一页视频 | 久久综合婷婷 | 欧美黑大粗硬毛片视频 | 日本不卡一区二区在线观看 | 黄色毛片免费看 | 久久久www成人免费精品 | 久久午夜神器 | 黄色aaa视频 | 午夜激情视频免费 | 成人啪啪18免费网站 | 久精品久久 | 国产精品一区在线观看 | 黄色免费电影网址 | 韩国三级日本三级香港三级黄 | 91网站永久免费看 | 69性欧美高清影院 | 一级毛片在线视频 | 久久免费视频一区二区三区 | 欧美人成在线 | 国产免费资源 | 国产一级爱c视频 | 在线观看美女av | 久久不射电影网 | 久久777国产线看观看精品 | 国产亚洲精品久久久久久久久久 | 国产亚洲精品久久久闺蜜 | 亚洲国产超高清a毛毛片 |