iOS中延时执行的几种方式比较及汇总

 更新时间:2018年02月03日 11:59:52   作者:wide288  
这篇文章主要给大家介绍了关于iOS中延时执行的几种方式比较及汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行。本文列举了四种延时执行某函数的方法及其一些区别。假如延时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"];
   });

此方式在可以在参数中选择执行的线程。

是一种非阻塞的执行方式,

没有找到取消执行的方法。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • IOS实现展开二级列表效果

    IOS实现展开二级列表效果

    本文通过实例代码向大家演示在IOS中如何实现展开二级列表的效果,这个功能效果很好,对于日常开发APP中很有帮助,下面一起来看看如何实现吧。
    2016-08-08
  • IOS生成与读取二维码名片

    IOS生成与读取二维码名片

    这篇文章主要为大家介绍了IOS生成与读取二维码名片的方法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • iOS 将系统自带的button改装成上图片下文字的样子

    iOS 将系统自带的button改装成上图片下文字的样子

    这篇文章主要介绍了 iOS 将系统自带的button改装成上图片下文字的样子,代码是通过继承UIButton,然后再重写layoutSubviews方法,对自带的图片和titleLabel进行重新的layout。下面通过本文给大家分享下实现代码
    2016-12-12
  • 详解ios监听reloadData刷新列表完毕的时机

    详解ios监听reloadData刷新列表完毕的时机

    这篇文章主要介绍了详解ios监听reloadData刷新列表完毕的时机,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Objective-C学习之ARC的实现方法

    Objective-C学习之ARC的实现方法

    自动引用计数(Automatic Reference Counting, ARC)把压在程序员们肩头的管理内存的重担卸除了不少,更不用说让跟踪内存泄漏那样的烦心事也少了很多。下面这篇文章主要给大家介绍了关于Objective-C学习之ARC的实现方法,需要的朋友可以参考借鉴下。
    2017-12-12
  • iOS 进度条、加载、安装动画的简单实现

    iOS 进度条、加载、安装动画的简单实现

    这篇文章主要介绍了iOS 进度条、加载、安装动画的简单实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 支持Xcode10和适配iPhone XS Max、iPhone XR的方法

    支持Xcode10和适配iPhone XS Max、iPhone XR的方法

    这篇文章主要介绍了支持Xcode10和适配iPhone XS Max、iPhone XR的方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • iOS中UITextField实现过滤选中状态拼音的代码

    iOS中UITextField实现过滤选中状态拼音的代码

    这篇文章主要介绍了iOS中UITextField实现过滤选中状态拼音的代码,需要的朋友可以参考下
    2018-01-01
  • iOS 水波纹动画的实现效果

    iOS 水波纹动画的实现效果

    本篇文章主要介绍了iOS 水波纹的实现的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 解析iOS应用开发中对设计模式中的抽象工厂模式的实现

    解析iOS应用开发中对设计模式中的抽象工厂模式的实现

    这篇文章主要介绍了解析iOS应用开发中对设计模式中的抽象工厂模式的实现,示例代码为传统的Objective-C,需要的朋友可以参考下
    2016-03-03

最新评论