iOS runLoop 详解2
来源:互联网 发布:美橙互联域名证书下载 编辑:程序博客网 时间:2024/05/17 07:53
http://www.360doc.com/content/15/0418/13/9200790_464106136.shtml
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]]; 这个是什么意思
请高手详细解释下吧 注意这里我猜测 这个检测时间是在子线程里面进行检测的
如需在游戏中检测touch事件,在Timer的执行函数最后加上这段代码就可以了。
[[NSRunLoop currentRunLoop] runUntilDate: [NSDate distantPast]];
这样游戏就可以获得较高的帧速而不会影响获取触摸事件了。
以上摘自http://www.yayabo.cn/thread-138-1-3.html
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
这句话是什么意思 是让程序一直运行下去吗
看了文档,没看懂
应该结合timer使用吧?可以让timer一直处理,
引用
简单的说一下本人的理解:
首先是Run Loop的部分概念,它的作用就是循环、处理事件。具体来说有两个方面: 1. 定时启动任务(一般用和Timer协作);2. 处理事件。
在单线程的app中,不需要注意Run Loop,但不代表没有。程序启动时,系统已经在主线程中加入了Run Loop。它保证了我们的主线程在运行起来后,就处于一种“等待”的状态(而不像一些命令行程序一样运行一次就结束了),这个时候如果有接收到的事件(Timer的定时到了或是其他线程的消息),就会执行任务,否则就处于休眠状态。
如果我们要写多线程的程序,可能就需要自己来管理Run Loop。
下面说一下楼主提出的方法中的参数:
RunMode: NSDefaultRunLoopMode,可以把这个理解为一个”过滤器“,我们可以只对自己关心的事件进行监视。一般NSDefaultRunLoopMode是最常用的。
启动run loop的方法就是lz写的这个,它的说明如下:
Runs the loop once, blocking for input in the specified mode until a given date.
启动run loop一次,在特定的run loop mode下等待输入。
如果没有附加input source或是timer,或是过limitDate,run loop就会退出,并且方法返回NO。
下来是Run Loop的使用场合:
1. 使用port或是自定义的input source来和其他线程进行通信
2. 在线程(非主线程)中使用timer
3. 使用 performSelector...系列(如performSelectorOnThread, ...)
4. 使用线程执行周期性工作
run loop不需要创建,在线程中只需要调用[NSRunLoop currentRunLoop]就可以得到
假设我们想要等待某个异步方法的回调。比如connection。如果我们的线程中没有启动run loop,是不会有效果的(因为线程已经运行完毕,正常退出了)。我们可以用一个条件来运行run loop
BOOL done = NO;
do
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
}
while(!done);
这样就可以一直进行等待,直到在别的位置将done置为YES,表示任务完成。
大家可以在子线程里去添加一个timer,或是调用NSURLConnection,就明白用法了。
没有看请lz用的函数,
[[NSRunLoop currentRunLoop] runUntilDate: [NSDate distantPast]]; 是会重复调用
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
- iOS runLoop 详解2
- iOS runloop代码详解2
- iOS runloop详解
- iOS Runloop详解
- iOS runloop 详解1
- iOS runloop 详解5
- iOS RunLoop详解
- iOS RunLoop详解
- iOS SDK详解之Runloop
- iOS 开发runLoop 机制详解
- iOS runLoop 用法详解3
- iOS runloop 代码详解1
- iOS 开发runLoop 机制详解
- iOS runloop 详解3 如何停止子线程的runloop
- 玩转iOS开发 - Runloop 详解
- IOS RunLoop详解以及API使用
- iOS runloop
- iOS runloop
- 导入GitHub第三方开源库(强大的gradle)
- 视频解析工具
- 事务的4个特征
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
- 学习DataRow 类
- iOS runLoop 详解2
- 当触摸到某些控件时候 隐藏输入法键盘
- 代码变量命名规范
- Swift-录制视频、预览并保存
- Linux安装配置apache
- mac 安装brew
- 杀死Linux下顽固的僵尸进程
- 项目中学到SQL语句中的一些常用技巧及函数
- rman删除归档日志