1 前言

使用Dispatch_after ,能够在你想指定一定数量的延迟之后,使用 GCD 来执行代码。今天我们就来学习一下。

2 代码实例

Demo1:

ZYAppDelegate.m

- (void) printString:(NSString *)paramString{NSLog(@"%@", paramString);
}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{/*推迟三秒执行printString方法withObject:传的参数*/[self performSelector:@selector(printString:) withObject:@"Grand Central Dispatch" afterDelay:3.0];self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.viewController = [[[ZYViewController alloc] initWithNibName:@"ZYViewController" bundle:nil] autorelease];self.window.rootViewController = self.viewController;[self.window makeKeyAndVisible];return YES;
}

运行3秒后控制台结果:

2013-05-10 17:04:52.710 GCDAfterTest[2385:c07] Grand Central Dispatch

Demo2:

ZYAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{//设置时间为2double delayInSeconds = 2.0;//创建一个调度时间,相对于默认时钟或修改现有的调度时间。dispatch_time_t delayInNanoSeconds =dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);//推迟两纳秒执行dispatch_queue_t concurrentQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_after(delayInNanoSeconds, concurrentQueue, ^(void){NSLog(@"Grand Center Dispatch!");});self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.viewController = [[[ZYViewController alloc] initWithNibName:@"ZYViewController" bundle:nil] autorelease];self.window.rootViewController = self.viewController;[self.window makeKeyAndVisible];return YES;
}

运行2秒后控制台结果

2013-05-10 17:06:27.023 GCDAfterTest2[2435:1303] Grand Center Dispatch!

Demo3:

ZYAppDelegate.m

void processSomething(void *paramContext){NSLog(@"Processing...");
}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{//设置时间double delayInSeconds = 2.0;dispatch_time_t delayInNanoSeconds =dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);//调用C函数processSomethingdispatch_after_f(delayInNanoSeconds, concurrentQueue,NULL,processSomething);self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.viewController = [[[ZYViewController alloc] initWithNibName:@"ZYViewController" bundle:nil] autorelease];self.window.rootViewController = self.viewController;[self.window makeKeyAndVisible];return YES;
}

运行2秒后控制台结果

2013-05-10 17:07:27.660 GCDAfterTest3[2476:1303] Processing...

3 结语

以上是所有内容,希望对大家有所帮助。

Demo代码下载:http://download.csdn.net/detail/u010013695/5353603

转载于:https://www.cnblogs.com/jiangu66/archive/2013/05/11/3073368.html

IOS开发(63)之GCD执行延迟操作相关推荐

  1. iOS开发——多线程篇——GCD

    一.基本概念 1.简介 什么是GCD 全称是Grand Central Dispatch,可译为"牛逼的中枢调度器" 纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公 ...

  2. iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)

    之前写过一篇有关更换图片背景色的文章,今天遇到一块儿了,就干脆重新整理一下了.iOS开发中常用的对图片的处理操作: 一.更换图片的背景颜色 /** * 改变图片背景为白色 * * @param ima ...

  3. IOS开发之多线程 -- GCD的方方面面

    前言:这篇GCD的博文是本人阅读了很多海内外大神的关于GCD的文章,以及结合之前自己对GCD的粗浅的认识,然后取其精华,去其槽粕,综合起来的笔记,而且是尽可能的以通熟易懂的并且是正确的理论论述方式呈现 ...

  4. iOS 开发之沙盒机制 文件操作 (NSFielManager)

    原文链接:http://www.jianshu.com/p/349855b5a8ae iOS APP 可以在自己的沙盒里读写文件,但是,不可以访问其他 APP 的沙盒.每一个 APP 都是一个信息孤岛 ...

  5. IOS开发:关于performSelectorXXX的延迟的使用

    - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; 这 ...

  6. iOS开发-63】Unknown type name CGRect,did you mean Rect?的解决方案

    出现这个问题的童鞋,几乎都是因为用了Xcode6. 原因:在Xcode6之前,创建的文件系统会自动为用户导入Foundation.h和UIKit.h文件,但是最新的Xcode6只为用户导入了Found ...

  7. 那些好用的iOS开发工具

    版权说明 本文首发于<程序员>杂志2014年6月刊,未经允许,请勿转载. 前言 从苹果发明iPhone起,AppStore上的一个又一个类似flappy bird的一夜暴富的故事刺激着大量 ...

  8. 好用的iOS开发工具

    前言 从苹果发明 iPhone 起,AppStore 上的一个又一个类似 flappy bird 的一夜暴富的故事刺激着大量开发者加入移动开发大军.随着这些开发者出现的,还有大量方便 iOS 开发者的 ...

  9. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...

最新文章

  1. 工作9年开发面试华为要薪1W,华为员工:我司没有这么低工资的岗.....
  2. R语言SVM支持向量机模型数据分类实战:探索性数据分析、模型调优、特征选择、核函数选择
  3. ASP.NET简化编辑界面 V3
  4. Android Fragments 详细使用详细介绍
  5. Android 系统(98)---Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
  6. linux 自启动脚本顺序,(linux开机启动脚本的顺序.doc
  7. matlab多折线图,MATLAB画出堆叠折线图
  8. C++基础new和delete运算符,new和delete简介
  9. ffmpeg 推流同时录像命令_使用FFmpeg将rtsp流摄像头视频转码为rtmp播放
  10. Pycharm安装与汉化教程
  11. DBUtil 的使用
  12. navicat安装+链接mysql 8.x
  13. 2022前端面试题上岸手册-浏览器部分
  14. TeamCity VS Jenkins:选择正确的CI / CD工具
  15. C语言经典100例(9)——要求输出国际象棋棋盘。
  16. 数开头的成语有哪些_一至十数字开头的成语有哪些?
  17. 使用aspose-slides将ppt转pdf
  18. Spring5学习详细笔记
  19. 外汇天眼:英国研究人员与南非合作应对气候变化
  20. u盘正常接入后计算机无法看到,能识别U盘但显示不出来的解决办法【详解】

热门文章

  1. sqoop建表_使用Sqoop创建/导入配置单元表
  2. python实现二分法查找_python二分法查找
  3. h5自定义相机界面_有没有什么比较好用的H5小程序?
  4. 服务器安装系统教程进光盘界面,iso光盘系统怎么安装系统教程
  5. sqlserver调用mysql存储过程_sqlserver调用存储过程
  6. arm linux dma_alloc_coherent 实现,dma_alloc_coherent (建立一致性 DMA 映射函数)
  7. java 抽象 属性_在java中如何定义一个抽象属性示例详解
  8. 修改蓝牙耳机按键映射_拆解报告:QCY T4 TWS蓝牙耳机
  9. php 删除相对应的id,PHP 在下面这个留言板代码中加入删除按钮,每一个删除按钮删除相对应一行数据,这怎么弄...
  10. mybatisplus多表关联查询_ET工具_KETTLE多表关联