RunLoop

      RunLoop是一种让线程随时处理事件而不退出的机制。RunLoop实际上是一个对象管理了其需要处理的事件和消息。RunLoop让线程在需要处理事件的时候被唤醒,不需要处理事件的时候休眠,节省资源。它是一个监听事件的换,将事件分配到各个目标进行处理。

   OSX/IOS提供了两个这样的对象,NSRunLoop和CFRunLoopRef,CFRunLoopRef是在coreFundation框架下的,是纯C语言的API,所有的这些API都是线程安全的。NSRunLoop是基于CFRunLoopRef的封装,是面向对象的API,但这些API都不是线程安全的。

  线程的RunLoop是一一对应的。

RunLoop的四个作用:

1、是程序一直运行,接收用户输入

2、决定程序何时应该处于哪个Event

3、调用解耦

4、节省CPU时间

主线程会自动启动runLoop,辅线程是在需要的时候手动启动runloop

在与线程有更多的交互的时候才需要启动runLoop

比如:cocoa中performSelector。。方法

使用线程定时器

使用线程周期性工作

使用端口或者自定义的输入源来跟线程通信

在使用手动管理内存的项目中,会遇到很多自动释放的对象,如果这些对象的内存不能及时释放,那么机会导致内存极大地被占用。RunLoop就做了这样的工作,当一个循环结束的时候,它都会释放一次autorelease  pool




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值