真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

前言

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比云岡網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式云岡網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋云岡地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

在開發(fā)過程中,我們有時(shí)會(huì)希望把一些操作封裝起來延遲一段時(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í)行的方法。

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

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é)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。


名稱欄目:iOS中延時(shí)執(zhí)行的幾種方式比較及匯總
本文來源:http://weahome.cn/article/jeidie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部