[iOS RunLoop初识](一)
来源:互联网 发布:域名投资 编辑:程序博客网 时间:2024/05/19 10:08
前言
RunLoop是iOS/OS开发中比较基础的一个概念,在苹果开发中用在事件处理,延迟加载,屏幕刷新等功能的处理,其实抛开语言,RunLoop是一个的架构模式,也就是RunLoop不仅仅局限于iOS开发。
RunLoop的概念
一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出
RunLoop与线程
每条线程都有唯一的一个与之对应的RunLoop对象, 主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建RunLoop在第一次获取时创建,在线程结束时销毁.
为什么要使用runloop
1. 使程序一直运行接受用户输入 2. 决定程序在何时应该处理哪些Event 3. 调用解耦(对于编程经验为0的完全没搞懂这个意思,解释为Message Queue) 4. 节省CPU时间
NSRunLoop 和 CFRunLoopRef
CFRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 API,所有这些 API 都是线程安全的。NSRunLoop 是基于 CFRunLoopRef 的封装,提供了面向对象的 API,但是这些 API 不是线程安全的。CFRunLoopRef 的代码是开源的 :这里下载 ` http://opensource.apple.com/tarballs/CF/CF-855.17.tar.gz`整个 CoreFoundation 的源码
RunLoop的内部实现原理
实际上 RunLoop 就是一个函数,其内部是一个 do-while 循环。当你调用 CFRunLoopRun() 时,线程就会一直停留在这个循环里;直到超时或被手动停止,该函数才会返回。
2 0
- [iOS RunLoop初识](一)
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS 的RunLoop初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- iOS RunLoop 初识
- IOS RunLoop浅析 一
- IOS RunLoop浅析 一
- IOS RunLoop浅析 一
- 初识runloop
- 初识runloop
- IOS 多线程 RUNLOOP 机制 (一)
- 判断两个链表是否相交并找出交点
- html设置Qwebview滚动条的样式风格
- Oracle_create an index using unusable
- js dom
- APPIUM+JAVA实现对安卓APK的自动化测试----第十二篇【操作模拟】
- [iOS RunLoop初识](一)
- http://bbs.pediy.com/showthread.php?p=1365122
- Android 使用mediaRecorder进行录音
- 优秀的用户界面设计
- Html5 Video 移动跨平台实现
- nginx 配置
- c++内存问题整理与智能指针使用
- cocospod后出现Undefined symbols for architecture armv7s\arm64
- LeetCode 59 - Spiral Matrix II