首页 > 其他分享 >iOS:runloop 相关

iOS:runloop 相关

时间:2023-04-21 13:44:07浏览次数:34  
标签:observer iOS source0 runloop mode 相关 UITrackingRunloopMode Runloop

一个 Runloop 包含了多个 mode
一个 mode 包含了若干个 source0/source1/time/observer
Runloop 启动时只能选择其中一个 model 作为当前 model

Runloop 常用的 Model
1. UIInitializationRunLoopMode:首次启动时执行的 mode,启动后不再使用
2. kRunloopDefaultMode:默认 mode,一般主线程任务都在该 mode 下执行
3. UITrackingRunloopMode:界面追踪 mode,用于滑动触摸时的 mode,保证页面滑动时不受其他 mode 影响。
4. GSEventReceiveRunLoopMode:接收系统内部时间的 mode,用不上
5. NSRunloopCommonModes:
CommonModels

每当 Runloop 进行切换时,都会将 commonModeItem 中的 source0/source1/time/observer 同步到具有 common 标记的 mode 中。

比如:NSTimer 是在 kCFRunLoopDefaultMode 中运行,scrollView 滚动时是在 UITrackingRunloopMode 中运行,所以需要把计时器添加到 commonMode 中

Runloop 运行逻辑

Runloop 运行内部逻辑

标签:observer,iOS,source0,runloop,mode,相关,UITrackingRunloopMode,Runloop
From: https://www.cnblogs.com/dulinshun/p/iosrunloop-xiang-guan.html

相关文章

  • BIOS
    配置开发环境,写一个helloworld驱动程序编写基本的驱动程序代码结构,导出为自定义项目模板,方便以后使用模板创建项目,少写一些样板代码;同时了解了wdk的ntifs头文件和预处理指令#pragmaonce  vscode联机搜索文档 开发三件套: 调试器WinDbg(X64)+虚拟机VirtualBox+编译器VSc......
  • iOS:Cocoapods 常用命令
    命令描述安装与卸载sudogeminstallcocoapods安装cocoapodssudogeminstallcocoapods-v1.10.0安装cocoapods1.10.0版本sudogemuninstallcocoapods卸载cocoapodssudogemuninstallcocoapods-v1.10.0卸载版本1.10.0---安装在个......
  • 下载Apache软件基金的软件和项目(Hadoop相关组件)
    一、下载Hadoop相关组件,可以到Apache软件基金的资源目录:Apache分发目录地址:https://dlcdn.apache.org/   二、下载软件方法一:在页面中找到需要下载的软件目录,点击进去,选择对应的版本就可以直接下载。方法二:在上面的地址栏中直接加上对应的组件名称,进入后选择对应的版......
  • vue全家桶进阶之路47:Vue3 Axios拦截器封装成request文件
    可以将Axios拦截器封装成一个单独的request文件,以便在整个应用程序中重复使用。以下是一个示例,展示如何将Axios拦截器封装成一个request文件:1、创建一个名为request.js的新文件,并导入Axios:importaxiosfrom'axios';2、创建一个名为request的函数,并将其导出:这将创建一个名......
  • vue全家桶进阶之路46:Vue3 Axios拦截器和globalProperties全局设置
    在Vue.js3中,使用Axios与Vue.js2.x中类似,但是需要进行一些修改和更新,下面是Vue.js3中Axios的定义和使用方式:首先,你需要安装Axios和Vue.js3.x,可以使用npm或yarn等包管理工具安装:npminstallaxiosvue@next然后,在你的Vue.js3应用程序中,你可以使用以下代码来导入和使用Axio......
  • Module not found: Error: Can't resolve 'axios' in 'D:\BaiduSyncdisk\vue-cli-pr
    Modulenotfound:Error:Can'tresolve'axios'in'D:\BaiduSyncdisk\vue-cli-project\dc_vue3\src\utils'  因:没有安装axios插件在运行项目的地方npminstall--saveaxios解决办法 npminstall--saveaxios......
  • 基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
    2023年目前要说最热的点,肯定是ChatGPT了。ChatGPT官方提供的网页版本,还有需要科*上网,很多人都会基于此进行封装。现在是移动互联网时代,基于手机APP的需求还是很大的。所以,今天给大家推荐一个ChatGPT客户端开源项目,兼容苹果和安卓手机、PC。项目简介这是基于C#开发的客户端,兼......
  • RDS相关信息
    RDS相关概念PS(programservice)---提供8个字符的电台名称显示PTY(programtype)---提供电台节目类型显示TP(trafficprogram)---提供电台是否为交通电台(不一定在播放交通信息)TA(trafficannouncement)---提供电台是否正在播放交通指示信息AF(alternativefrequencies......
  • CMake相关记录
    1.添加第三方库##yaml-cppset(YAML_INCLUDE_PATH${CMAKE_CURRENT_SOURCE_DIR}/third-party/yaml-cpp/include)set(YAML_LIB_PATH${CMAKE_CURRENT_SOURCE_DIR}/third-party/yaml-cpp/lib)include_directories(${YAML_INCLUDE_PATH})find_library(YAML_LIBNAMESyaml-cpp......
  • Locust相关
    一、Locust进行接口性能测试1、特点:基于Python的开源负载测试工具支持多操作系统支持二次开发能够模拟更多用户基于协程(微线程)的并发2、Locust与JMeter对比 3、locust安装前提:已经安装pycharm、Pyth......