在iOS开发过程中,Runloop的使用也是不容小觑的,虽然也是不太常用,但是这部分对于iOS开发也是相当重要的,而且在面试找工作的时候也是面试官必考的部分。那么下来就来谈谈Runloop的理论及使用。
一、Runloop概念
1.Runloop概念:Runloops是与线程相关的基础框架的一部分。一个Runloop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。其实它内部就是do-while循环,这个循环内部不断地处理各种任务(比如Timer,Observer)。使用Runloop的目的是让线程在有工作任务的时候忙于工作,在没工作任务的时候处于休眠状态。
2.NSRunLoop和CFRunLoopRef
在开发的时候我们不能在一个线程中去操作另外一个线程的Runloop对象,如果这样做很可能会造成无法估量的后果。不过值得庆幸的是CoreFundation中的不透明类CFRunLoopRef是线程安全的,而且这两种类型的Runloop完全可以混合使用。
Cocoa中的NSRunLoop类可以通过实例方法: - (CFRunLoopRef)getCFRunLoop;
获取对应的CFRunLoopRef类,来达到线程安全的目的。
CFRunLoopRef是在CoreFoundation框架内的,它提供了C语言