RunLoop运行循环 和 RunTime运行时消息机制的介绍和使用

一.Runloop —运行循环数组

1)用来干吗的?网络

是一个死循环,保证程序不退出。程序默认一个线程执行一个任务,执行完任务后该线程就over掉了,但主线程不行,主线程一over掉程序就没有了。主线程没有事情作的时候会进入休眠状态等待用户的交互,用户只要有了点击事件,睡眠状态下的runloop就会被唤醒。查找点击的位置,由谁来响应点击事件,把消息发送给对方的对象。socket

2) 在程序开发中何时会用到runloop?oop

>定时器(NSTimer 和 CADisplayLink)线程

>苹果公开提供的Mode有两个:KCRunLoopDefaultMode(默认等待用户交互的) 和 KCTrackingLoopDefaultMode(专门处理滚动视图的拖动事件)对象

目的:保证程序不退出,监听全部事件!(触摸/时钟/网络)游戏

开发使用:事件

 >实例化时钟,添加到运行循环。开发

注意:必定要销毁时钟,不然会产生循环引用!get

>socket 开发,使用runloop 可以监听网络端口数据的接收与发送状况!

 socket 开发,一般用在智能家居开发/游戏机。

- 有不少文章介绍 运行循环的实战, 都会举例 AFN 2.0的时候 NSURLConnectionURL

-必需要了解到“自动释放池”的释放与建立是与runloop有关的!

二.RunTime—运行时   “消息机制”

>程序启动时,首先加载运行时!是OC的底层。

运行时的应用场景:

1)关联对象。仿SDWebImage时,给分类动态添加属性。作到更好的解耦。简化使用。

2)*动态获取类的属性。字典转模型使用!创建NSObject的分类。

>2.1class_copyPropertyList 获取类属性数组

>遍历数组

>2.2property_getName  得到每个属性的名称

>添加到OC的数组

>free  释放运行时数组

相关文章
相关标签/搜索