iOS RunLoop

2016-04-29  本文已影响94人  JaXz
什么是RunLoop
RunLoop与线程间的关系

1.每一个RunLoop对象都有一个线程和它唯一对应。
2.主线程的RunLoop是自动创建的,子线程的RunLoop需要主动创建。
3.RunLoop是在第一次获取的时候创建,并在线程结束时自动销毁。

iOS中有2个API可以提供访问和使用RunLoop
RunLoop相关类

1.CFRunLoopModeRef

2.CFRunLoopTimerRef

3.CFRunLoopSourceRef

4.CFRunLoopObserverRef

png

添加观察者的代码:

//创建observer
  CFRunLoopObserverRefobserver =           CFRunLoopObserverCreateWithHandler(CFAllocatorGetDefault(),kCFRunLoopAllActivities,YES,0,^(CFRunLoopObserverRefobserver, CFRunLoopActivityactivity) {
NSLog(@"----监听到RunLoop状态发生改变---%zd",activity);
});

//添加观察者:监听RunLoop的状态
CFRunLoopAddObserver(CFRunLoopGetCurrent(),observer, kCFRunLoopDefaultMode);

//释放Observer
CFRelease(observer);
上一篇 下一篇

猜你喜欢

热点阅读