美文网首页
iOS-runloop ___见解

iOS-runloop ___见解

作者: 守护浪漫的小香樟 | 来源:发表于2017-12-20 13:48 被阅读0次

RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将具体介绍runloop以及runloop的使用

一、runloop的概念:

一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,通常的代码逻辑是这样的:

function loop() {

initialize();

do {

var message = get_next_message();

process_message(message);

} while (message != quit);

}

这种模型通常被称作 Event Loop。 Event Loop 在很多系统和框架里都有实现,比如 Node.js 的事件处理,比如 Windows 程序的消息循环,再比如 OSX/iOS 里的 RunLoop。实现这种模型的关键点在于:如何管理事件/消息,如何让线程在没有处理消息时休眠以避免资源占用、在有消息到来时立刻被唤醒。

所以,RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行上面 Event Loop 的逻辑。线程执行了这个函数后,就会一直处于这个函数内部 "接受消息->等待->处理" 的循环中,直到这个循环结束(比如传入 quit 的消息),函数返回。

OSX/iOS 系统中,提供了两个这样的对象:NSRunLoop 和 CFRunLoopRef。

CFRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 API,所有这些 API 都是线程安全的。

NSRunLoop 是基于 CFRunLoopRef 的封装,提供了面向对象的 API,但是这些 API 不是线程安全的。

CFRunLoopRef 的代码是开源的,你可以在这里 http://opensource.apple.com/tarballs/CF/CF-855.17.tar.gz 下载到整个 CoreFoundation 的源码。为了方便跟踪和查看,你可以新建一个 Xcode 工程,把这堆源码拖进去看。

相关文章

  • iOS-runloop ___见解

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将具体介绍runloop以及runlo...

  • iOS-RunLoop的浅显见解

    首先非常感谢李明杰老师的视频教程教导,虽然只是视频,却感到身临其境,大家可以关注MJ老师的微博:@李明杰 1.什么...

  • iOS知识点(10)RunLoop

    深入理解RunLoop iOS---实例化讲解RunLoop iOS runloop iOS-RunLoop充满灵...

  • 深入浅出Runloop

    书上得来终觉浅、绝知此事要躬行。本文参考来源:http://mrpeak.cn/blog/ios-runloop/...

  • iOS-RunLoop,为手机省电,节省CPU资源,程序离不开的

    转载:iOS-RunLoop,为手机省电,节省CPU资源,程序离不开的机制 RunLoop是什么?基本操作是什么?...

  • iOS-RunLoop

    什么是RunLoop?从字面意思看:运行循环、跑圈其实它内部就是do-while循环,在这个循环内部不断地处理各种...

  • ios-RunLoop

    - 什么是RunLoop? 从字面理解,循环跑。你也可以叫它事件循环,消息循环。本质是一个do{}while(0)...

  • iOS-RunLoop

    现在对iOS开发者要求越来越高,RunLoop其实在开发中很少会用到但是也需要我们去了解。 RunLoop简单介绍...

  • iOS-RunLoop

    本文主要内容: 概念 数据结构 事件循环的实现机制 RunLoop与NSTimer RunLoop与线程 源码 一...

  • iOS-RunLoop

    做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是...

网友评论

      本文标题:iOS-runloop ___见解

      本文链接:https://www.haomeiwen.com/subject/tdbzvttx.html