内容简介:就是下图所示的,用自己话总结出来就好
- 什么是Runloop
- ios程序中 main函数为什么不会退出
- runloop和线程的关系?
- 程序中添加每3秒响应一次的NSTimer,当拖动tableview时timer可能无法响应要怎么解决?
- runloop内部实现逻辑?
- runloop 是怎么响应用户操作的, 具体流程是什么样的?
- 说说runLoop的几种状态
- runloop的mode作用是什么?
- 如何实现一个常驻线程
什么是Runloop
- Runloop 还是比较顾名思义的一个东西,说白了就是一种循环,只不过它这种循环比较高级。一般的 while 循环会导致 CPU 进入忙等待状态,而 Runloop 则是一种“闲”等待,这部分可以类比 Linux 下的 epoll。当没有事件时,Runloop 会进入休眠状态,有事件发生时, Runloop 会去找对应的 Handler 处理事件。Runloop 可以让线程在需要做事的时候忙起来,不需要的话就让线程休眠
- RunLoop是通过通过内部维护的时间循环来对事件/消息进行管理的一个对象
- 没有消息需要处理时,休眠避免掉资源占用
- 用户态 -> 内核态
- 有消息时候,立刻被唤醒
- 内核态 -> 用户态
- 内核态 -> 用户态
- 没有消息需要处理时,休眠避免掉资源占用
ios程序中 main函数为什么不会退出
- main函数内部调用 UIApplicationMain 这个方法会启动一个RunLoop,有事做就做事,没事做就等待,保持不会退出
runloop和线程的关系?
+ 每条线程都有唯一的一个与之对应的RunLoop对象 + RunLoop保存在一个全局的Dictionary里,线程作为key,RunLoop作为value + 线程刚创建时并没有RunLoop对象,RunLoop会在第一次获取它时创建 + RunLoop会在线程结束时销毁 复制代码
runloop内部实现逻辑?
就是下图所示的,用自己话总结出来就好
程序中添加每3秒响应一次的NSTimer,当拖动tableview时timer可能无法响应要怎么解决?
-
常见的2种Mode
-
kCFRunLoopDefaultMode(NSDefaultRunLoopMode):App的默认Mode,通常主线程是在这个Mode下运行
-
UITrackingRunLoopMode:界面跟踪 Mode,用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他 Mode 影响
-
common模式下(一个占位用的Mode,不是一种真正的Mode) 可以兼容以上两种模式
runloop 是怎么响应用户操作的, 具体流程是什么样的?
- source1 捕捉用户触摸事件
- source0去处理触摸时间
说说runLoop的几种状态
- kCFRunLoopEntry = (1UL << 0), // 即将进入Loop
- kCFRunLoopBeforeTimers = (1UL << 1), //即将处理Timer
- kCFRunLoopBeforeSources = (1UL << 2), //即将处理Source
- kCFRunLoopBeforeWaiting = (1UL << 5), //即将进入休眠
- kCFRunLoopAfterWaiting = (1UL << 6), //刚从休眠中唤醒
- kCFRunLoopExit = (1UL << 7), //即将退出Loop
- kCFRunLoopAllActivities = 0x0FFFFFFFU //所有状态改变
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 前端面试题—vue部分详解
- 【Android面试】HashMap详解(一)
- 非面试向跨域实践详解
- 2019 JavaScript面试题详解(基础+进阶)
- iOS 模式详解—「runtime 面试、工作」看我就 ???? 了 ^_^.
- 数据结构和算法面试题系列—二分查找算法详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
iOS应用逆向工程 第2版
沙梓社、吴航 / 机械工业出版社 / 2015-4-1 / 79.00
你是否曾因应用上线的第一天即遭破解而无奈苦恼,想要加以防范,却又束手无策? 你是否曾为某一应用深深折服,想要借鉴学习,却又无从下手? 你是否已不满足于public API,想要进军Cydia开发,却又求学无门? 你是否已产生“不识Apple真面目,只缘身在App Store中”的危机感,想要通过阅读来一窥这冰山一角外的整个北极,却又找不到合适的书? 你是否已经因无法跨越开发......一起来看看 《iOS应用逆向工程 第2版》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
Base64 编码/解码
Base64 编码/解码