只有当在程序中创建了一个次级辅助线程,而且很明确地需要循环执行相关事务的时候才有必要时用Runloop。程序主线程的Runloop是很非常重要的基础部件,程序框架提供了主线程Runloop,并自动启动了该Runloop的相关代码。用iOS中UIApplication的run方法来启动主线程Runloop,该Runloop启动是程序启动顺序中不可或缺的一步。在Xcode中创建的程序不需要自己去调用这个run方法。

如果使用Runloop,它相关的配置都是比较简单的。和所有的线程编程一样,都需要有线程具体的退出时机(就是说在线程编程的时候,我们都必须要设计线程退出情况,就是不能一直存在,或者不能手动去杀死线程)。因为使用强制退出线程会导致内存泄漏和其他资源无法清理之类的,这在线程管理终止线程那一节中是有提到的。

具体怎么配置和退出Runloop在下一节会详细说到。

⚠️ ⚠️ ⚠️ 我的个人总结:在后面几节中在创建RunloopObserver、RunloopSource、RunloopTimer时在使用CoreFoundation下的接口时,其对外部的相关回调都是在创建对应Context时提供函数指针作为回调的。

苹果是不允许我们自己创建Runloop的,每个线程都有与之对于的Runloop。具体的在下一节中讲解。

本人总结TIPS

  • 由于主线程有自己的Runloop,所有只有在我们创建自己线程的时候才有可能去创建Runloop

results matching ""

    No results matching ""