NSRunLoop几个常用的方法
来源:互联网 发布:暴漫官方淘宝店是哪个 编辑:程序博客网 时间:2024/06/06 04:06
+ (NSRunLoop *)currentRunLoop; //获得当前线程的run loop
+ (NSRunLoop *)mainRunLoop; //获得主线程的run loop
- (void)run; //进入处理事件循环,如果没有事件则立刻返回。注意:主线程上调用这个方法会导致无法返回(进入无限循环,虽然不会阻塞主线程),因为主线程一般总是会有事件处理。
- (void)runUntilDate:(NSDate *)limitDate; //同run方法,增加超时参数limitDate,避免进入无限循环。使用在UI线程(亦即主线程)上,可以达到暂停的效果。
- (BOOL)runMode:(NSString *)mode beforeDate:(NSDate *)limitDate; //等待消息处理,好比在PC终端窗口上等待键盘输入。一旦有合适事件(mode相当于定义了事件的类型)被处理了,则立刻返回;类同run方法,如果没有事件处理也立刻返回;有否事件处理由返回布尔值判断。同样limitDate为超时参数。
- (void)acceptInputForMode:(NSString *)mode beforeDate:(NSDate *)limitDate; //似乎和runMode:差不多(测试过是这种结果,但确定是否有其它特殊情况下的不同),没有BOOL返回值。
官网文档也提到run和runUntilDate:会以NSDefaultRunLoopMode参数调用runMode:来处理事件。
当app运行后,iOS系统已经帮助主线程启动一个run loop,而一般线程则需要手动来启动run loop。
使用run loop的一个好处就是避免线程轮询的开销,run loop在无事件处理时可以自动进入睡眠状态,降低CPU的能耗
(二)主线程的run loop的各种方式:
[[NSRunLoop mainRunLoop] run]; //主线程永远等待,但让出主线程时间片
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate distantFuture]]; //等同上面调用
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate date]]; //立即返回
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10.0]]; //主线程等待,但让出主线程时间片,然后过10秒后返回
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; //主线程等待,但让出主线程时间片;有事件到达就返回,比如点击UI等。
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate: [NSDate date]]; //立即返回
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate: [NSDate dateWithTimeIntervalSinceNow:10.0]]; //主线程等待,但让出主线程时间片;有事件到达就返回,如果没有则过10秒返回。
- NSRunLoop几个常用的方法
- 几个常用的方法
- 几个java常用的方法
- inventDimParm 常用的几个方法
- JFrame常用的几个方法
- js几个常用的方法
- map的几个常用方法
- sqlite的几个常用方法
- UITableView 常用的几个方法
- 字符串常用的几个方法
- jQuery的几个常用方法
- sqlite的几个常用方法
- ArrayList的几个常用方法
- JPA的几个常用方法
- 栈的几个常用方法
- File的几个常用方法
- GCD 常用的几个方法
- StringBuffer的几个常用方法
- lua脚本入门
- LeetCode---(2) Add Two Number
- TortoiseSVN使用教程[多图超详细]
- Windows/Linux环境下使用Java VisualVM进行Java程序性能分析与监视
- QML图像、状态和动画--图片、边界图片和动态图片
- NSRunLoop几个常用的方法
- 关于virtualbox安装linux无法识别硬盘的解决方案
- Objective-C动态性
- Search Paths 说明
- Django静态文件处理【开发环境】
- 【Android一般进阶】引用数据类型euqals()与==作用相同
- Leetcode the number of '1' bit
- Linux下程序设计基础
- 如何高效地判断数组中是否包含某特定值