初学RunLoop
2016-03-30 17:08
337 查看
RunLoop
运行循环,跑圈
可以看出每条线程都有一个与之对应的RunLoop对象
主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建。
基本作用:保持程序的持续运行
处理App中的各种事件(比如触摸事件,定时器事件,Selector事件)
节省CPU资源,提高程序性能,该做事时做事,该休息时休息。
相当于
Bool running = YES;
do {
//执行各种任务,处理各种事件
}while(running);
return 0;
如果没有RunLoop,程序就不会卡在那里等你做事情,就会直接运行完自动退出。
RunLoop对象
iOS中有两套API来访问和使用RunLoop
1.Foundation中的
NSRunLoop
获取RunLoop对象
[NSRunLoop currentRunLoop];获得当前线程的RunLoop
[NSRunLoop mainRunLoop];获得主线程的RunLoop
2.Core Foundation中的
CFRunLoopRef
获得RunLoop对象
CFRunLoopGetCurrent();
CFRunLoopGetMain();
前者是OC的
后者是C语言的
而且前者是后者的包装。
RunLoop资料
苹果官方文档
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html
RunLoop相关类
core Foundation中关于RunLoop的5个类
CFRunLoopRef
CFRunLoopModeRef
CFRunLoopSorceRef
CFRunLoopTimerRef
CFRunLoopObserverRef
运行循环,跑圈
可以看出每条线程都有一个与之对应的RunLoop对象
主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建。
基本作用:保持程序的持续运行
处理App中的各种事件(比如触摸事件,定时器事件,Selector事件)
节省CPU资源,提高程序性能,该做事时做事,该休息时休息。
相当于
Bool running = YES;
do {
//执行各种任务,处理各种事件
}while(running);
return 0;
如果没有RunLoop,程序就不会卡在那里等你做事情,就会直接运行完自动退出。
RunLoop对象
iOS中有两套API来访问和使用RunLoop
1.Foundation中的
NSRunLoop
获取RunLoop对象
[NSRunLoop currentRunLoop];获得当前线程的RunLoop
[NSRunLoop mainRunLoop];获得主线程的RunLoop
2.Core Foundation中的
CFRunLoopRef
获得RunLoop对象
CFRunLoopGetCurrent();
CFRunLoopGetMain();
前者是OC的
后者是C语言的
而且前者是后者的包装。
RunLoop资料
苹果官方文档
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html
RunLoop相关类
core Foundation中关于RunLoop的5个类
CFRunLoopRef
CFRunLoopModeRef
CFRunLoopSorceRef
CFRunLoopTimerRef
CFRunLoopObserverRef
相关文章推荐
- Android应用架构
- 修改tomcat默认的编码方式
- 网站架构
- Linux基本的vi命令
- Xshell4连接Linux系统中文显示乱码解决办法
- VMware Vsphere高可用性(HA群集)
- Android使用Face++架构包实现人脸识别
- ava method "org.apache.struts2.components.Form.getValidators(String)" threw an exception when invoke
- Linux OS基本命令和操作
- 虚拟机linux 挂载windows共享目录 给linux的nginx服务器使用
- gdb+gdbserver调试arm-linux程序
- Linux多线程——异步
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
- linux图形化界面访问
- OpenCL错误代号定义
- Linux下显示IP地理位置信息的小工具-nali
- Linux环境高级编程--介绍
- Linux下Rsync+sersync实现数据实时同步[转]
- Shell 参数(1)
- Ubuntu 安装docker