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

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

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

2020-07-26 02:30:18
字體:
供稿:網(wǎng)友

前言

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

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

2.定時器:NSTimer

采用計時器的延遲方法

[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í)價值,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 旬邑县| 和顺县| 丹寨县| 大埔县| 南木林县| 新和县| 偃师市| 仙桃市| 海伦市| 柘荣县| 龙口市| 溧阳市| 出国| 荥阳市| 绵阳市| 永城市| 福贡县| 汝城县| 光泽县| 阿拉善左旗| 云阳县| 瑞金市| 抚远县| 福鼎市| 保山市| 皮山县| 耒阳市| 柳州市| 廊坊市| 柏乡县| 遵义市| 英德市| 三原县| 铜川市| 当阳市| 沙雅县| 论坛| 江山市| 五河县| 叶城县| 阿荣旗|