二
: Runloop
结合多线程
//1.
什么是
runloop?
//runloop
运行循环
,
循环处理线程中的任务
,
负责任务中的调度和执行
//2.
每个线程中
,
无论是主线程还是子线程
,
系统都默认帮我们创建了
runloop,
主线程中的
runloop
是默认打开的
,
而子线程中的
runloop
是默认关闭的
//3.runloop的底层实现: 有一个定时源和输入源, 定时源的作用是: 通过一定的时间间隔, 来循环监听自身线程中的任务变化, 比如有没有触摸事件. 输入源的作用:处理来自别的线程的任务, 用来进行线程通信(主线程回到子线程, 子线程回到主线程).
//runtime讲解
//1. 是什么?
//1.1runtime是一套比较底层的纯C语言的API, runtime就是一个库, 一个C语言库, 包含了许多底层操作的C语言API
//1.2平时我们编写的OC代码, 在程序运行期间, 其实最终都经过runtime转成了C语言代码, runtime是OC幕后工作者, 是整个OC的底层
//1.3举例:
//Student *stu = [[Student alloc] init];经过runtime被编译成objc_msgSend(objc_msgSend("Student", "alloc"), "init");
//objc_msgSend其实就是向某个对象发送什么消息
//2.用过吗? 怎用?
//2.1runtime属于OC底层, 可以进行非常底层的操作eg.
//*在程序中运行过程中,动态创建一个类, (KVO)
//*向类中动态添加方法, 添加属性
//*遍历一个类中的所有属性和实例变量