IOS开发(63)之GCD执行延迟操作
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执行延迟操作相关推荐
- iOS开发——多线程篇——GCD
一.基本概念 1.简介 什么是GCD 全称是Grand Central Dispatch,可译为"牛逼的中枢调度器" 纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公 ...
- iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)
之前写过一篇有关更换图片背景色的文章,今天遇到一块儿了,就干脆重新整理一下了.iOS开发中常用的对图片的处理操作: 一.更换图片的背景颜色 /** * 改变图片背景为白色 * * @param ima ...
- IOS开发之多线程 -- GCD的方方面面
前言:这篇GCD的博文是本人阅读了很多海内外大神的关于GCD的文章,以及结合之前自己对GCD的粗浅的认识,然后取其精华,去其槽粕,综合起来的笔记,而且是尽可能的以通熟易懂的并且是正确的理论论述方式呈现 ...
- iOS 开发之沙盒机制 文件操作 (NSFielManager)
原文链接:http://www.jianshu.com/p/349855b5a8ae iOS APP 可以在自己的沙盒里读写文件,但是,不可以访问其他 APP 的沙盒.每一个 APP 都是一个信息孤岛 ...
- IOS开发:关于performSelectorXXX的延迟的使用
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; 这 ...
- iOS开发-63】Unknown type name CGRect,did you mean Rect?的解决方案
出现这个问题的童鞋,几乎都是因为用了Xcode6. 原因:在Xcode6之前,创建的文件系统会自动为用户导入Foundation.h和UIKit.h文件,但是最新的Xcode6只为用户导入了Found ...
- 那些好用的iOS开发工具
版权说明 本文首发于<程序员>杂志2014年6月刊,未经允许,请勿转载. 前言 从苹果发明iPhone起,AppStore上的一个又一个类似flappy bird的一夜暴富的故事刺激着大量 ...
- 好用的iOS开发工具
前言 从苹果发明 iPhone 起,AppStore 上的一个又一个类似 flappy bird 的一夜暴富的故事刺激着大量开发者加入移动开发大军.随着这些开发者出现的,还有大量方便 iOS 开发者的 ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...
最新文章
- 工作9年开发面试华为要薪1W,华为员工:我司没有这么低工资的岗.....
- R语言SVM支持向量机模型数据分类实战:探索性数据分析、模型调优、特征选择、核函数选择
- ASP.NET简化编辑界面 V3
- Android Fragments 详细使用详细介绍
- Android 系统(98)---Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
- linux 自启动脚本顺序,(linux开机启动脚本的顺序.doc
- matlab多折线图,MATLAB画出堆叠折线图
- C++基础new和delete运算符,new和delete简介
- ffmpeg 推流同时录像命令_使用FFmpeg将rtsp流摄像头视频转码为rtmp播放
- Pycharm安装与汉化教程
- DBUtil 的使用
- navicat安装+链接mysql 8.x
- 2022前端面试题上岸手册-浏览器部分
- TeamCity VS Jenkins:选择正确的CI / CD工具
- C语言经典100例(9)——要求输出国际象棋棋盘。
- 数开头的成语有哪些_一至十数字开头的成语有哪些?
- 使用aspose-slides将ppt转pdf
- Spring5学习详细笔记
- 外汇天眼:英国研究人员与南非合作应对气候变化
- u盘正常接入后计算机无法看到,能识别U盘但显示不出来的解决办法【详解】
热门文章
- sqoop建表_使用Sqoop创建/导入配置单元表
- python实现二分法查找_python二分法查找
- h5自定义相机界面_有没有什么比较好用的H5小程序?
- 服务器安装系统教程进光盘界面,iso光盘系统怎么安装系统教程
- sqlserver调用mysql存储过程_sqlserver调用存储过程
- arm linux dma_alloc_coherent 实现,dma_alloc_coherent (建立一致性 DMA 映射函数)
- java 抽象 属性_在java中如何定义一个抽象属性示例详解
- 修改蓝牙耳机按键映射_拆解报告:QCY T4 TWS蓝牙耳机
- php 删除相对应的id,PHP 在下面这个留言板代码中加入删除按钮,每一个删除按钮删除相对应一行数据,这怎么弄...
- mybatisplus多表关联查询_ET工具_KETTLE多表关联