iOS开发GCD的简单使用
Posted Vijay的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发GCD的简单使用相关的知识,希望对你有一定的参考价值。
- (void)viewDidLoad { [super viewDidLoad]; // gcd 可以充分调用设备的 cpu 发挥最大性能,在 C 语言基础之上封装的 // dispatch_queue_t开辟一个线程 // DISPATCH_QUEUE_PRIORITY_DEFAULT设置优先级 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 在此线程里开启异步下载 dispatch_async(queue, ^{ UIImage * image = [self imageWithStringUrl:@"http://www.chinadaily.com.cn/hqgj/jryw/201205/f5aae8120f566b9cca8cf29791f111fd.jpg"]; dispatch_async(dispatch_get_main_queue(), ^{ // 在主线程设置 UI 的内容,将 UI 的内容转到主线程里进行 UIImageView * view = [[UIImageView alloc] initWithFrame:self.view.frame]; view.image = image; [self.view addSubview:view]; }); }); [self createGCDTimer]; } -(void)createGCDTimer { // dispatch_source_t是监视某些类型的事件的对象,当这些事件发生的时候,他会自动将一个 block放入dispatch_get_queue执行队列中 dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue()); // 设置计时器的属性,每10秒触发一次,误差在1秒范围内 dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), 0.2*NSEC_PER_SEC, 1*NSEC_PER_SEC); dispatch_source_set_event_handler(timer, ^{ // 在这里写定时器处理的内容 static int i = 0; NSLog(@"%d",i); i++; // 必须结构完整 if (i>100) { dispatch_source_cancel(timer); } }); // 启动定时器 dispatch_resume(timer); } -(UIImage *)imageWithStringUrl:(NSString *)str { NSURL * url = [NSURL URLWithString:str]; NSData * data = [NSData dataWithContentsOfURL:url]; UIImage * image = [UIImage imageWithData:data]; return image; }
以上是关于iOS开发GCD的简单使用的主要内容,如果未能解决你的问题,请参考以下文章