iOS NSEC_PER_SEC、NSEC_PER_MSEC宏定义小计

在使用dispatch_after函数时:

dispatch_after(dispatch_time_t when,
    dispatch_queue_t queue,
    dispatch_block_t block);

常常会这样创建时间参数:

    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, 3ull * NSEC_PER_SEC);

其中:ull 是C语言的数值字面量,是显式表明类型时使用的字符串(表示 ”unsigned long long “)
点进宏定义 USEC_PER_SEC :看到很多宏定义,在网上找了一下,感觉解释的怪怪的。索性自己解释一番

  • SEC   秒
  • PER   每
  • NSEC 纳秒
  • MSEC 毫秒
  • USEC 微秒
#define NSEC_PER_SEC 1000000000ull     多少纳秒 = 1秒            1秒 = 10亿纳秒              
#define NSEC_PER_MSEC 1000000ull       多少纳秒 = 1毫秒          1毫秒 = 100万纳秒
#define USEC_PER_SEC 1000000ull        多少微秒 = 1秒            1秒 = 100万微秒   
#define NSEC_PER_USEC 1000ull          多少纳秒 = 1微秒           1微秒 = 1000 纳秒

第三行需要注意一下:
按照道理来讲,第三行的单位应该是微秒,如果继续换算成纳秒,还需要再乘以103才对。但是既然没有乘,大家在使用的时候就要注意,此宏虽表征微秒与秒的单位换算,但实际代表的时间是以纳秒来计算的。因此,但从计算来讲,只表示1毫秒哦。

最后科普下 秒单位的换算:(手动敲黑板:Duang、Duang、Duang)

1s=103ms(毫秒)
=106μs(微秒)
=109ns(纳秒)
=1012ps(皮秒)
=1015fs(飞秒)
=1018as(阿秒)
=1021zm(仄秒)
=1024ym(幺秒)

如果喜欢此博文,欢迎小伙伴简书点赞哦~
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GCD笔记 总结一下多线程部分,最强大的无疑是GCD,那么先从这一块部分讲起. Dispatch Queue的种类...
    jins_1990阅读 796评论 0 1
  • Redis集群性能问题深度分析 参考 Redis开发与运维https://redis.io/http://www....
    三杯水Plus阅读 3,656评论 0 3
  • 前言 这是关于GCD的第二篇文章,GCD的API有100多个,通过快捷键Option + 单击,可以在Refere...
    taogege666阅读 325评论 0 0
  • NSTimer实现定时器 调用下面的方法就会开启一个定时任务 每隔ti秒,调用一次aTarget的aSelecto...
    yanhooIT阅读 2,209评论 0 1
  • dispatch_semaphore是GCD用来同步的一种方式,dispatch_semaphore 信号量基于计...
    e5a8d3183387阅读 355评论 0 1