IOS开发谈谈对Runtime 和 Runloop的理解

Runtime

Runtime简称运行时,OC就是运行时机制,也就是在运行时候的一些机制,其中最重要的事消息机制。

作用

消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现

方法调用的本质就是让对象发送消息

objc_msgSend,只用对象才能发送消息,因此以objc开头。

使用消息机制前提,必须导入 #import

使用场景

交换方法

动态添加方法

给分类添加属性

字典转模型:Runtime

RunLoop

给我们的感觉就像应用一直处于随时待命的状态,在没人操作的时候它一直在休息,在让它干活的时候,它就能立刻响应

Runloo的作用

保持程序的持续运行,保持线程的持续运行,并接受用户输入。

理app中的各种事件(AutoreleasePool、事件响应、手势识别、界面更新、定时器、PerformSelecter、关于GCD、关于网络请求)

调用解耦(Message Queue)

节省CPU资源,提高程序性能:该做事时做事,该休息时休息

RunLoop与线程

每个线程(包括主线程)都有一个对应的RunLoop对象

我们并不能自己创建Runloop对象,但是可以获取到系统提供的RunLoop对象

主线程的RunLoop默认是启动的,用于接收各种输入sources;其他线程的RunLoop默认是没有启动的,如果你需要更多的线程交互则可以手动配置和启动

RunLoop在第一次获取时由系统自动创建,在线程结束时销毁

Runloop运行模式

一个Runloop包含若干个Mode,每个Mode又包含若干个Source/Timer/Observer

每次RunLoop启动时,只能制定其中一个Mode,这个Mode被称作CurrentMode

如果需要切换Mode,只能退出Loop,再从新指定一个Mode进入系统默认模式

你可能感兴趣的:(IOS开发谈谈对Runtime 和 Runloop的理解)