iOS 什么是RunLoop?
ios 什么
2023-09-14 09:04:14 时间
什么是RunLoop,RunLoop的实现机制是怎样的?
如何实现一个常驻线程?
1.什么是RunLoop?
- RunLoop是通过内部维护的事件循环来对事件/消息进行管理的一个对象
1.1 什么是事件循环?Event Loop
- 没有消息需要处理时,休眠以避免资源占用
- 有消息需要处理时,立刻被唤醒
-
维护的事件循环可以用来不断的处理消息或者说事件,然后对他们进行管理。同时当没有消息需要处理时,会发生从用户态到内核态的切换。由此可以进行当前线程的休眠,避免资源占用。当有消息需要处理时会发生从内核态到用户态的切换,当前的用户线程会被唤醒。
-
用户态和内核态:计算机合理的进行资源的调度,内核态有系统调用,陷阱指令,包括开机关机的一些操作。如果每一个用户进程都可以促使用户手机关机或是中断,这是无法想象的。所以要有用户态和内核态的区分。内核态可以对用户态中的线程进行一些调度
1.2 我们的main函数为什么能保持不退出?
- main函数中有一个运行循环,runloop
- 接收消息:点击事件,滑动列表,处理网络事件的返回
-
在main函数中所调用的UIApplicationMain()函数内部会启动主线程的runloop,而runloop是对事件循环的一种维护机制,可以做到有事做的时候做事,没有事情做的时候通过从用户态到内核态的切换,从而避免资源的占用,使当前线程处于休眠状态
相关文章
- (NO.00002)iOS游戏精灵战争雏形(二)
- ios app在itunesConnect里面的几种状态
- iOS开发之微信聊天页面实现
- iOS开发之表视图爱上CoreData
- iOS UIAppearance使用详解
- iOS设计模式之观察者模式
- 【IOS-COCOS2D-X 游戏开发之九】COCOS2DX利用CCSAXPARSER解析XML数据&CCMUTABLEDICTIONARY使用与注意!
- iOS开发那些事--性能优化–内存泄露问题的解决
- iOS(swift)tabbar 图片(UIImage)设置和大小 字体颜色
- iOS运行时文档解析(Runtime oc消息转发 objc_msgSend 动态加载方法)
- iOS Xcode11打开远程推送(Push Notifications)开关
- Android 11.0 12.0仿ios的hotseat效果修改hotseat样式