Runtime
Runtime简称运行时,OC就是运行时机制,也就是在运行时候的一些机制,其中最重要的事消息机制。
作用
消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现
方法调用的本质就是让对象发送消息
objc_msgSend,只用对象才能发送消息,因此以objc开头。
使用消息机制前提,必须导入 #import <objc/message.h>
使用场景
交换方法
动态添加方法
给分类添加属性
字典转模型: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进入系统默认模式