GCD之dispatch_after

作者: yehkong | 来源:发表于2017-05-08 17:58 被阅读18次

序言:经常需要在等待一定时间后,执行代码块。但是需要注意的是,dispatch_after不是在指定的时间后执行代码块,而是在指定的时间追加处理到dispatch queue,因为还有可能有大量的其他追加或者系统本身的原因,这个时间往往比指定的时间更长,所以严格来讲,dispatch_after是大致延时处理。

使用的方法如下:

Snip20170510_2.png

xcode中的code snippet是这样的,也是最经常的用法,只需填入具体的秒数,即可添加处理代码。

  • 以上图片中的红色框框对于dispatch_after函数来说,是一个参数dispatch_time_t;这也是这篇笔记要讲的另外一个重点:
    dispatch_time_t类型可以使用dispatch_time函数或者dispatch_walltime函数获得。
    前者主要是用于计算相对时间,而后者用于计算绝对时间(类似于闹钟功能)。
  1. dispatch_time函数使用简单,上面截图就是构造方法,这里就不继续扒了。
    2.1. dispatch_walltime函数由POSIX中使用的struct timespec
    类型的时间得到dispatch_time_t类型的值。
    2.2 struct timespec类型的时间可以很轻松地通过NSDate类对象得到。
    2.3 NSDate转struct timespec类型代码如下:

dispatch_time_t getDispatchTimeFromDate(NSDate *date)
{
NSTimeInterval interval = [date timeIntervalSince1970];
double second,subsecond;
subsecond = modf(interval, &second);
struct timespec time;
time.tv_sec = second;
time.tv_nsec = subsecond * NSEC_PER_SEC;
dispatch_time_t mileStone = dispatch_walltime(&time, 0);
return mileStone;
}

附上 struct timespec定义

ifndef _STRUCT_TIMESPEC

define _STRUCT_TIMESPEC struct timespec

_STRUCT_TIMESPEC
{
__darwin_time_t tv_sec;
long tv_nsec;
};

endif

相关文章

  • GCD之dispatch_after

    序言:经常需要在等待一定时间后,执行代码块。但是需要注意的是,dispatch_after不是在指定的时间后执行代...

  • iOS dispatch_after

    dispatch_after是来延迟执行的GCD方法,dispatch_after能让我们添加进队列的任务延时执行...

  • GCD中的dispatch_after使用说明

    dispatch_after解说 dispatch_after是来延迟执行的GCD方法,因为在主线程中我们不能用s...

  • JSPatch 学习二 -- 基础用法(3)

    8. GCD 使用 dispatch_after() ;dispatch_async_main() ;dispat...

  • GCD 总结(一)

    1.延时操作 GCD dispatch_after() 优点:写起来方便,直观 ...

  • dispatch_after

    dispatch_after属于GCD,能够实现延迟执行的语法,或者说是GCD中延迟执行的函数。使用dispatc...

  • iOS GCD之dispatch_after

    GCD是一个延迟执行的函数,他有两个参数,第一个参数是dispatch_time_t即延迟多长时间,第二个参数是d...

  • 延迟调用方法总结

    延迟调用自己代理的方法: //GCD延迟dispatch_after(dispatch_time(DISPATCH...

  • GCD简单使用

    基础使用 GCD的延时执行方法 dispatch_after GCD的一次性代码(只执行一次) dispatch_...

  • dispatch_time_t 的创建

    开发中常用到GCD方法dispatch_after(<#dispatch_time_t when#>, <#dis...

网友评论

本文标题:GCD之dispatch_after

本文链接:https://www.haomeiwen.com/subject/bhmmtxtx.html