CADisplayLink 和GCD用于循环触发某一事件
来源:互联网 发布:汽车销售软件 编辑:程序博客网 时间:2024/06/13 02:48
CADisplayLink
创建方法
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)];
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.displayLink invalidate];
self.displayLink = nil;
特性
屏幕刷新时调用
CADisplayLink是一个能让我们以和屏幕刷新率同步的频率将特定的内容画到屏幕上的定时器类。CADisplayLink以特定模式注册到runloop后,每当屏幕显示内容刷新结束的时候,runloop就会向CADisplayLink指定的target发送一次指定的selector消息, CADisplayLink类对应的selector就会被调用一次。所以通常情况下,按照iOS设备屏幕的刷新率60次/秒
GCD
执行一次:
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
//执行事件
});
重复执行:
NSTimeInterval period = 1.0;
//设置时间间隔
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), period * NSEC_PER_SEC, 0);
//每秒执行
dispatch_source_set_event_handler(_timer, ^{
//在这里执行事件
});
dispatch_resume(_timer);
0 0
- CADisplayLink 和GCD用于循环触发某一事件
- NSTimer、CADisplayLink 和 GCD 定时器用法
- angularjs中回车键触发某一事件
- NSTimer/CADisplayLink/GCD
- easyui的datagrid单击某一栏同时触发onClickRow和其中一栏的自定义事件怎么办?
- GridView中鼠标悬停在某一列中触发事件
- JS循环网页元素,手动触发事件
- javascript触发事件和说明
- 关于键盘触发事件和屏幕触发事件的问题
- 关于键盘触发事件和屏幕触发事件的问题
- jQuery事件触发和js手动触发事件
- iOS 学习笔记 --- 定时器NSTimer、CADisplayLink、GCD
- JavaScript触发文档事件和窗口事件
- CADisplayLink 和 NSTimer
- CADisplayLink(主) 和 NSTimer
- NSTimer和CADisplayLink
- CADisplayLink 和 NSTimer
- 一种不断循环监测某一事件的方法
- EditText 将回车改为搜索,监听 有两次次打开问题
- Thread和Runnable
- Highcharts属性详解
- IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET
- spring 用户登录拦截器
- CADisplayLink 和GCD用于循环触发某一事件
- 301、404、200、304等HTTP状态
- Java动态代理的基本用法
- QFuture QFutureWatcher
- oracle11g在linux系统下开机自启动设置
- tabBarItem 的选中和不选中文字属性
- 海量数据挖掘MMDS week6: 支持向量机Support-Vector Machines,SVM
- 3d max 视图快捷键
- ubuntu重复循环登陆