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

Runloop与Runtime详解
本文详细介绍了iOS开发中Runloop的作用及其应用场景,包括如何利用Runloop实现定时器和socket网络开发,并深入探讨了Runtime(运行时)的概念及其实用案例。

一.Runloop —运行循环

1)用来干嘛的?

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

2) 在程序开发中什么时候会用到runloop?

>定时器(NSTimer 和 CADisplayLink)

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

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

开发使用:

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

注意:一定要销毁时钟,否则会产生循环引用!

>socket 开发,使用runloop 能够监听网络端口数据的接收与发送情况!

 socket 开发,通常用在智能家居开发/游戏机。

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

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

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

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

运行时的应用场景:

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

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

>2.1class_copyPropertyList 获取类属性数组

>遍历数组

>2.2property_getName  获得每一个属性的名称

>添加到OC的数组

>free  释放运行时数组


转载于:https://my.oschina.net/u/2613740/blog/654857

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值