国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS中延時(shí)執(zhí)行的幾種方式比較及匯總

2019-10-21 18:41:46
字體:
供稿:網(wǎng)友

前言

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

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

1.performSelector方法

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

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

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

是一種非阻塞的執(zhí)行方式,

暫時(shí)未找到取消執(zhí)行的方法。

2.定時(shí)器:NSTimer

采用計(jì)時(shí)器的延遲方法

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

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

是一種非阻塞的執(zhí)行方式,

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

3. sleep方式

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

此方式在主線程和子線程中均可執(zhí)行。

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

沒有找到取消執(zhí)行的方法。

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

4.GCD方式

//在主線程延遲執(zhí)行   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{   [self delayDo:@"GCD"];   });//在子線程延遲執(zhí)行   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"];   });

此方式在可以在參數(shù)中選擇執(zhí)行的線程。

是一種非阻塞的執(zhí)行方式,

沒有找到取消執(zhí)行的方法。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳朔县| 潜山县| 安溪县| 彭阳县| 文安县| 霸州市| 呼图壁县| 湘潭市| 康乐县| 宿迁市| 平遥县| 保德县| 温州市| 宁强县| 巴彦淖尔市| 金川县| 昭觉县| 鸡东县| 东乌| 泸定县| 深水埗区| 广东省| 滨海县| 新津县| 津南区| 德兴市| 太白县| 宜兰市| 集安市| 汝城县| 郓城县| 佛冈县| 新干县| 两当县| 曲麻莱县| 三穗县| 图木舒克市| 长宁县| 山丹县| 荃湾区| 黄龙县|