腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
视频
用户
沙龙
专栏
专区
综合排序
丨
最热优先
丨
最新优先
时间不限
RunLoop
初识
RunLoop
运行循环 目的作用:1.保证启动的程序不退出;2.负责监听事件,触摸、时钟、网络事件;3.
Runloop
做完一件事,它就会sleep;4.
Runloop
负责在一次循环中渲染UI。 针对first一中的 我们把timer事件添加到了
runloop
的默认环境下,当应用程序启动当时候,我们没有做任何操作,timer事件来了,
runloop
就切换都默认模式下去执行timer事件,执行完毕后就马上睡觉 ,timer事件又来,
runloop
又切换到默认模式下执行timer事件,执行完又睡觉,当这个时候你拖住了我们的界面,你就出发了UI模式下的source事件,
runloop
就马上处理source事件,你没有松手就一直处理 UI模式下的source事件,
runloop
就无法再去处理默认模式下的timer 事件。 因为自线程的
runloop
默认不循环,怎么办,开启子线程的
runloop
循环。 [[NSRunLoopcurrentRunLoop]run];//让
runloop
循环起来,这是个死循环!!!!!
编程那点事
2023-02-25
504
0
标签:
nstimer
selector
target
timer
ui
RunLoop
RunLoop
与线程的关系 苹果不允许直接创建
RunLoop
,它只提供了两个自动获取的函数:CFRunLoopGetMain() 和 CFRunLoopGetCurrent()。 线程和
RunLoop
之间是一一对应的,其关系是保存在一个全局的 Dictionary 里。线程刚创建时并没有
RunLoop
,如果你不主动获取,那它一直都不会有。
RunLoop
的创建是发生在第一次获取时,
RunLoop
的销毁是发生在线程结束时。你只能在一个线程的内部获取其
RunLoop
(主线程除外)。
RunLoop
对外的接口 一个
RunLoop
包含若干个 Mode,每次调用
RunLoop
的主函数时,只能指定其中一个 Mode,这个Mode被称作 CurrentMode。
RunLoop
_1.png 总结下来就是:
RunLoop
其内部是一个 do-while 循环。
大壮
2018-06-19
682
0
标签:
ios
RunLoop
RunLoop
是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍
RunLoop
的概念以及底层实现原理。 线程刚创建时并没有
RunLoop
,如果你不主动获取,那它一直都不会有。
RunLoop
的创建是发生在第一次获取时,
RunLoop
的销毁是发生在线程结束时。 当其加入到
RunLoop
时,
RunLoop
会注册对应的时间点,当时间点到时,
RunLoop
会被唤醒以执行那个回调。
RunLoop
的内部逻辑 根据苹果在文档里的说明,
RunLoop
内部的逻辑大致如下: ? 可以看到,实际上
RunLoop
就是这样一个函数,其内部是一个 do-while 循环。
RunLoop
的底层实现 从上面代码可以看到,
RunLoop
的核心是基于 mach port 的,其进入休眠时调用的函数是 mach_msg()。
用户2491699
2018-08-09
1.2K
0
标签:
其他
RunLoop
RunLoop
,就是一个循环,但是当面试官问题
RunLoop
休眠之后怎么被唤醒的?
RunLoop
和线程的关系是怎么维护的?等等这一系列相关问答的时候你能否回答出来,如果不能那可以继续往下看,我们一起研究下神奇的
RunLoop
! 2.
RunLoop
内部结构(组成) 在CFRunLoop源码中有5个类跟
RunLoop
相关 CFRunLoopRef:代表
RunLoop
的对象 CFRunLoopModeRef:代表
RunLoop
所以,我们就有了
RunLoop
。 一条线程对应一个
RunLoop
对象,每条线程都有唯一一个与之对应的
RunLoop
对象。
RunLoop
对象在第一次获取
RunLoop
时创建,销毁则是在线程结束的时候。 主线程的
RunLoop
对象系统自动帮助我们创建好了,而子线程的
RunLoop
对象需要我们主动创建和维护。
陈雨尘
2021-02-04
770
0
标签:
php
ios
编程算法
api
文件存储
RunLoop
总结:
RunLoop
基础知识
没有实际应用场景,很难理解一些抽象空洞的东西,所以前面几篇文章先介绍了
RunLoop
的几个使用场景。 另外AsyncDisplayKit中也有大量使用
RunLoop
的示例。 关于实际的使用
RunLoop
的案例和使用场景就不总结了,今天总结一点
RunLoop
的基础知识和概念。 什么是
RunLoop
? 顾名思义,它就是一个运行循环。 如何创建一个
RunLoop
? 包括MainRunLoop在内,每一个
RunLoop
都与一个线程关联着。确切的说,是先有线程,再有
RunLoop
。 关于线程与
RunLoop
的关系,在
RunLoop
官方文档的第一节讲的很清楚。 我们不用,也最好不要显示的创建
RunLoop
,苹果提供了两个API,便于我们来获取
RunLoop
。 关于
RunLoop
中的多种结构体以及
RunLoop
中的主要逻辑部分就先总结到这儿了。
Haley_Wong
2018-08-22
1.1K
0
标签:
其他
iOS多线程:『
RunLoop
』详尽总结
RunLoop
RunLoop
文章目录
RunLoop
简介 1.1 什么是
RunLoop
? 所以,我们就有了
RunLoop
。 一条线程对应一个
RunLoop
对象,每条线程都有唯一一个与之对应的
RunLoop
对象。 我们只能在当前线程中操作当前线程的
RunLoop
,而不能去操作其他线程的
RunLoop
。
RunLoop
对象在第一次获取
RunLoop
时创建,销毁则是在线程结束的时候。
RunLoop
相关类 下面我们来了解一下Core Foundation框架下关于
RunLoop
的5个类,只有弄懂这几个类的含义,我们才能深入了解
RunLoop
运行机制。
RunLoop
运行逻辑图 这张图对于我们理解
RunLoop
来说太有帮助了,下边我们可以来说下官方文档给我们的
RunLoop
逻辑。
程序员充电站
2018-05-31
2.7K
0
标签:
ios
iOS
RunLoop
RunLoop
相关类
Core Foundation框架下关于
RunLoop
的5个类,只有弄懂这几个类的含义,我们才能深入了解
RunLoop
运行机制。 CFRunLoopRef:代表
RunLoop
的对象 CFRunLoopModeRef:
RunLoop
的运行模式 CFRunLoopSourceRef:就是
RunLoop
模型图中提到的输入源/事件源 CFRunLoopTimerRef:就是
RunLoop
模型图中提到的定时源 CFRunLoopObserverRef:观察者,能够监听
RunLoop
的状态改变 下边详细讲解下几种类的具体含义和关系 我们可通过以下方式来获取
RunLoop
对象: Core Foundation CFRunLoopGetCurrent(); // 获得当前线程的
RunLoop
对象 CFRunLoopGetMain() 可以看到
RunLoop
的状态在不断的改变,最终变成了状态 32,也就是即将进入睡眠状态,说明
RunLoop
之后就会进入睡眠状态。
conanma
2021-09-02
603
0
标签:
ios
Runloop
的再理解(
Runloop
下)
1,
Runloop
是什么? 我们知道,
Runloop
可以保证线程不退出,那么,为什么
Runloop
具有此功效呢?那就要从
Runloop
的定义说起。
Runloop
的字面意思是运行循环,但是我们不要忘了,
Runloop
其实也是一个对象,它位于CoreFoundation框架下。
Runloop
可以监控上面的
Runloop
事件,具体流程如下图: ?
Runloop
源码解析 <一>
Runloop
实现 1,获取
Runloop
从苹果开放的API来看,不允许我们直接创建
Runloop
对象,只能通过以下几个函数来获取
Runloop
: CFRunloopRef 不管获取子线程的
runloop
还是获取主线程的
runloop
,当存储线程与
runloop
对应关系的全局字典不存在时,都会创建并初始化该全局字典。
拉维
2019-10-28
1.1K
0
标签:
c 语言
编程算法
文件存储
RunLoop
源码阅读
RunLoop
源码阅读
[toc]
RunLoop
概念 ? 的关系 CFRunLoopGetMain(void) //获取主线程的
runloop
CFRunLoopGetCurrent(void) //获取当前线程的
runloop
CF_EXPORT CFRunLoopRef 睡眠 __CFRunLoopServiceMachPort(::::) 睡眠后有4种情况可以唤醒
runloop
: 基于port的source事件 timer事件
runloop
超时 外部手动触发唤醒 事实上 每当
RunLoop
的内容发生变化时,
RunLoop
都会自动将commonModeItems里的Source/Observer/Timer 同步到具有 “Common” 标记的所有Mode里。 一般情况下被commone就是同时放入这两个mode的itemmode中 3,
runloop
是存在__CFRunLoops,而__CFRunLoops是一个全局的字典,和
runloop
本身无关。
用户8893176
2021-08-09
1.6K
0
标签:
https
网络安全
编程算法
消息队列 CKafka 版
再谈
RunLoop
RunLoop
一 概述: 一句话解释
RunLoop
:运行任务的循环。 为什么要有
RunLoop
:解决交互式UI设计中的一个问题,如何快速响应用户输入,如何快速将程序运行结果输出到屏幕? 实现: 接下来的章节中我们将实际实现一个基本的
runloop
, 同样很阳春,具备这么些个功能:
runloop
的启动、退出机制 任务注册
runloop
重入,loop一段指定的时间 autorelease //kick up
runloop
runloop
_run(); return 0; } 瞧,这就是main函数的全部了,分两部分:注册任务和启动
runloop
。 一个
runloop
,一个线程。 当启动一个新的线程的时候, 这个线程并不会自动拥有一个
runloop
,你必须自己完成创建等工作。 没有
runloop
,没有autorelease。 当其加入到
RunLoop
时,
RunLoop
会注册对应的时间点,当时间点到时,
RunLoop
会被唤醒以执行那个回调。
王大锤
2018-05-17
1.1K
0
标签:
php
api
编程算法
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档