皮皮网
皮皮网

【微信小程序 电商源码】【滴滴平台源码】【骨牌牛牛源码】iosrunloop源码编译

来源:网页源码修改路径 发表时间:2024-11-30 13:30:22

1.ios RunLoop理解

iosrunloop源码编译

源码微信小程序 电商源码

ios RunLoop理解

源码微信小程序 电商源码        RunLoop 就是一种循环,只不过它这种循环比较高级。一般的 while 循环会导致 CPU 进入忙等待状态,而 RunLoop 则是一种“闲”等待,当没有事件时,RunLoop 会进入休眠状态,有事件发生时, RunLoop 会去找对应的 Handler 处理事件。RunLoop 可以让线程在需要做事的时候忙起来,不需要的话就让线程休眠,会一直保持不会直接退出。

源码微信小程序 电商源码

        RunLoop 实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行。

源码微信小程序 电商源码

        RunLoop有5种模式

源码微信小程序 电商源码

        NSDefaultRunLoopMode (默认模式,有事件响应的时候,会阻塞旧事件)

源码微信小程序 电商源码

        NSRunLoopCommonModes (普通模式,不会影响任何事件)

源码微信小程序 电商源码

        UITrackingRunLoopMode (只能是有事件的时候才会响应的模式,用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他Mode影响)

源码微信小程序 电商源码

        还有两种系统级别的模式

源码微信小程序 电商源码

        一个是app刚启动的时候会执行一次

源码微信小程序 电商源码

        另外一个是系统检测app各种事件的模式

源码微信小程序 电商源码

        RunLoop的作用就是用来管理线程的, 当线程的RunLoop开启之后,线程就会在执行完成任务后,进入休眠状态,随时等待接收新的任务,而不是退出。

源码微信小程序 电商源码

        RunLoop 和线程是息息相关的,我们知道线程的作用是用来执行特定的一个或多个任务,在默认情况下,线程执行完之后就会退出,就不能再执行任务了。这时我们就需要采用一种方式来让线程能够不断地处理任务,并不退出。所以,我们就有了 RunLoop。

源码微信小程序 电商源码

        一条线程对应一个RunLoop对象,每条线程都有唯一一个与之对应的 RunLoop 对象。

源码微信小程序 电商源码

        RunLoop 并不保证线程安全。我们只能在当前线程内部操作当前线程的 RunLoop 对象,而不能在当前线程内部去操作其他线程的 RunLoop 对象方法。

源码微信小程序 电商源码

        RunLoop 对象在第一次获取 RunLoop 时创建,销毁则是在线程结束的时候。

源码微信小程序 电商源码

        主线程的 RunLoop 对象系统自动帮助我们创建好了,而子线程的 RunLoop对象需要我们主动创建和维护。

源码微信小程序 电商源码

        默认情况下主线程的 RunLoop是启动的

源码微信小程序 电商源码

        main.m文件如下所示:

源码微信小程序 电商源码

源码微信小程序 电商源码

相关栏目:娱乐