iOS开发RunnLoop学习二:GCD中的定时器
2016-09-10 16:58
295 查看
#import "ViewController.h" @interface ViewController () /** 注释 */ @property (nonatomic, strong) dispatch_source_t timer; @end @implementation ViewController /** * 1:GCD中的定时器:GCD中的定时器不受NSRanLoop影响 2:必须有强引用,引用该timer,要不,在方法执行完毕后timer就会被销毁,所以就不能执行定时器的任务,所以必须设置强引用timer,来保住timer的命来执行任务(因为其timer的定时器任务,不会立即执行,会间隔一段时间执行) * */ -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { NSLog(@"%s",__func__); //1.创建GCD中的定时器 /* 第一个参数:source的类型DISPATCH_SOURCE_TYPE_TIMER 表示是定时器 第二个参数:描述信息,线程ID 第三个参数:更详细的描述信息 第四个参数:队列,决定GCD定时器中的任务在哪个线程中执行 */ dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); //2.设置定时器(起始时间|间隔时间|精准度) /* 第一个参数:定时器对象 第二个参数:起始时间,DISPATCH_TIME_NOW 从现在开始计时 第三个参数:间隔时间 2.0 GCD中时间单位为纳秒 第四个参数:精准度 绝对精准0 */ dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC); //3.设置定时器执行的任务 dispatch_source_set_event_handler(timer, ^{ NSLog(@"GCD---%@",[NSThread currentThread]); }); //4.启动执行 dispatch_resume(timer); self.timer = timer; } @end
相关文章推荐
- iOS开发脚踏实地学习day05-大图滚动和定时器
- iOS学习应用开发就业课_010:定时器和视图移动
- ios 开发学习 :多线程之GCD的使用指南
- [IOS 开发] GCD学习 dispatch_barrier_async
- iOS中的三大定时器 iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD。
- ios开发多线程GCD的学习(一)
- IOS GCD开发学习中
- iOS基于GCD开发的定时器
- iOS学习笔记40-GCD定时器的实现
- IOS开发多线程GCD的学习(二)
- 学习IOS开发网络多线程篇--NSThread/GCD/
- 【iOS-Cocos2d游戏开发】系列(总结了多篇文章,可以好好学习
- 没有基础如何快速学习iOS 开发?
- IOS开发学习 IDE环境搭建教程
- ios学习--iphone开发笔记和技巧总结(原址持续更新)
- 【iOS-Cocos2d游戏开发】系列(总结了多篇文章,可以好好学习 )
- ios学习--[内存管理] 苹果开发工具XCode教学:用Instruments解决内存泄露
- IOS开发之CocoaAsyncSocket学习
- 【iOS-Cocos2d游戏开发】系列(总结了多篇文章,可以好好学习
- IOS开发学习一 :Cocoa环境熟悉和Xcode使用