iOS之Run Loop
2017-12-17 本文已影响0人
牛程程
Run Loop是用于管理在线程上异步执行事件的基础方式。Run Loop用来监听线程的一个或多个事件源。当事件发生时,系统唤醒线程并且将事件分派给Run Loop,然后Run Loop将分派给程序员指定的处理程序。如果没有事件存在并且已准备好处理,则Run Loop将使线程进入休眠状态。
Run Loop可以创建使用最少量资源的长寿命线程。因为在没有任何事情的时候,一个Run Loop可以使其线程进入睡眠状态,所以不需要轮询,浪费了CPU周期,并且阻止了处理器本身的休眠和节能。
当想要配置Run Loop时,只需启动线程,获取对Run Loop对象的引用,安装事件处理程序,然后指示Run Loop运行。 OS X提供的基础结构自动处理主线程Run Loop的配置。但是,如果需要创建长寿命的辅助线程,则必须自行为这些线程配置运行循环。
- (void)run;
- (BOOL)runMode:(NSRunLoopMode)mode beforeDate:(NSDate *)limitDate;
- (void)runUntilDate:(NSDate *)limitDate;
实际上,Run Loop的上层对应就是NSTimer。NSTimer定时器的触发其实就是是基于RunLoop运行的。