[关闭]
@SanMao 2015-08-08T19:55:38.000000Z 字数 3262 阅读 1705

NSRunLoop(运行循环)

多线程


基本介绍

RunLoop与线程

RunLoop相关类

CFRunLoopModeRef

CFRunLoopTimerRef

CFRunLoopSourceRef

CFRunLoopObserverRef

CF的内存管理(Core Foundation)

RunLoop处理逻辑-官方版


RunLoop处理逻辑-网友整理版

RunLoop应用



  1. // 第1个参数: 需要给哪个定时器设置
  2. // 第2个参数: 定时器开始的时间 / DISPATCH_TIME_NOW立即执行
  3. // 第3个参数: 定时器开始之后的间隔时间
  4. // 第4个参数: 定时器间隔执行的精准度,传入0代表最精准(尽量的让定时器精准), 传入一个大于0的值, 代表多少秒的范围是可以接受的
  5. // 第四个参数存在的意义: 主要是为了提高程序的性能
  6. // 注意点: Dispatch的定时器接收的时间是纳秒
  7. dispatch_source_set_timer(<#dispatch_source_t source#>, <#dispatch_time_t start#>, <#uint64_t interval#>, <#uint64_t leeway#>);
  1. // 第1个参数: 指定如何给observer分配存储空间
  2. // 第2个参数: 需要监听的状态类型/kCFRunLoopAllActivities监听所有状态
  3. // 第3个参数: 是否每次都需要监听
  4. // 第4个参数: 优先级
  5. // 第5个参数: 监听到状态改变之后的回调
  6. CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(<#CFAllocatorRef allocator#>, <#CFOptionFlags activities#>, <#Boolean repeats#>, <#CFIndex order#>, <#^(CFRunLoopObserverRef observer, CFRunLoopActivity activity)block#>);
  1. // 第1个参数: 需要给哪个RunLoop添加观察者
  2. // 第2个参数: 需要添加的Observer对象
  3. // 第3个参数: 在哪种模式下可以可以监听
  4. // 给主线程的RunLoop添加一个观察者
  5. CFRunLoopAddObserver(<#CFRunLoopRef rl#>, <#CFRunLoopObserverRef observer#>, <#CFStringRef mode#>);
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注