CFRunLoop对象监控任务(task)的输入源,并在它们为处理做好准备的时候调度控制。输入源样例可能包括用户输入设备、网络链接、定期或时间延迟事件,还有异步回调。
有3类对象可以被run loop监控:sources、timers、observers。
当这些对象需要处理的时候,为了接收回调,首先必须通过 CFRunLoopAddSource
,CFRunLoopAddTimer
,or CFRunLoopAddObserver
把这些对象放入run loop。 要停止接收它的回调,你也可以稍候通过CFRunLoopRemoveSource从runloop中移除某个对象。
run loop有不同的运行模式,每种模式都有其自身的对象集,runloop监控,同时在该模式下运行。
Core Foundation还定义了一个特殊的伪模式kCFRunLoopCommonModes来持有应当被“common”模式集共享的对象。 kCFRunLoopCommonModes
每个线程恰好有一个run loop,既不可以创建,也不能销毁线程的run loop。,Core Foundation根据需要为你创建。通过CFRunLoopGetMain CFRunLoopRun
run loop可以递归运行,你可以在任何run loop标注内部调用CFRunLoopRun
CFRunLoopRunInMode,还可以创建嵌套run loop,并在当前线程调用栈激活,在标注内并没有限制在那种模式可以运行。
你可以创建另一个runloop,激活运行在任何可行的run loop模式,包括任何已经运行在调用堆栈中的更高的模式。
getCFRunLoop
GetCFRunLoopFromEventLoop
以上是内存溢出为你收集整理的CFRunLoop全部内容,希望文章能够帮你解决CFRunLoop所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)