最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年02月03日 11:59:52   作者:wide288  
這篇文章主要給大家介紹了關(guān)于iOS中延時(shí)執(zhí)行的幾種方式比較及匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

在開發(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ì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

新宾| 吴川市| 安泽县| 鹤庆县| 鹤壁市| 政和县| 曲阳县| 湛江市| 图片| 津市市| 吴忠市| 平原县| 兴和县| 茂名市| 定日县| 岢岚县| 苏尼特左旗| 嫩江县| 丹江口市| 晋州市| 西藏| 南皮县| 宁波市| 西丰县| 汶上县| 全州县| 湘阴县| 潼南县| 安塞县| 辛集市| 会理县| 惠安县| 铁岭县| 南江县| 绥滨县| 曲水县| 内黄县| 武威市| 乐平市| 阜平县| 牙克石市|