dispatch_time_t


dispatch_time_t 类型,它的创建有两个函数

     1. dispatch_time(<#dispatch_time_t when#>, <#int64_t delta#>)
        
第一个参数是从什么时间开始 , 一般直接传  DISPATCH_TIME_NOW;  表示从现在开始
        
第二个参数表示具体的时间长度 ( 不能直接传  int   float),  可以写成这种形式  (int64_t)3* NSEC_PER_SEC
        
        #define NSEC_PER_SEC 1000000000ull  
每秒有 1000000000 纳秒
        #define NSEC_PER_MSEC 1000000ull    
每毫秒有 1000000 纳秒
        #define USEC_PER_SEC 1000000ull     
每秒有 1000000 微秒
        #define NSEC_PER_USEC 1000ull       
每微秒有 1000 纳秒
        
        
注意  delta  的单位是纳秒
        1
秒的写作方式可以是  1* NSEC_PER_SEC; 1000* NSEC_PER_MSEC; USEC_PER_SEC* NSEC_PER_USEC
     
     2. dispatch_walltime(<#const struct timespec * _Nullable when#>, <#int64_t delta#>),
        
第一个参数是一个结构体 创建的是一个绝对的时间点 , 比如  2016 10 10 8 30 30 如果你不需要自某一个特定的时刻开始 , 可以传  NUll, 表示自动获取当前时区的当前时间作为开始时刻 第二参数意义同第一个函数
        dispatch_time_t time = dispatch_walltime(NULL, 5* NSEC_PER_SEC);
        
     
两个函数的不同
       
例如 从现在开始 ,1 小时之后是触发某个事件
       
使用第一个函数创建的是一个相对的时间 , 第一个参数开始时间参考的是当前系统的时钟 ,  device  进入休眠之后 , 系统的时钟也会进入休眠状态 第一个函数同样被挂起 假如  device  在第一个函数开始执行后 10 分钟进入了休眠状态 , 那么这个函数同时也会停止执行 , 当你再次唤醒  device  之后 , 该函数同时被唤醒 , 但是事件的触发就变成了从唤醒  device  的时刻开始 ,1 小时之后
       
而第二个函数则不同 , 他创建的是一个绝对的时间点 , 一旦创建就表示从这个时间点开始 ,1 小时之后触发事件 , 假如  device  休眠了 10 分钟 , 当再次唤醒  device  的时候 , 计算时间间隔的时间起点还是   开始时就设置的那个时间点 而不会受到  device  是否进入休眠影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值