c语言中执行一次的函数once,iOS只执行一次的方法

IOS开发(64)之GCD任务最多只执行一次

1 前言

使用 dispatch_once 函数 在 APP 的生命周期内来保证你想确保每段代码只执行一次,即使它在代码的不同地方多次调用(比如单例的初始化)。

2 代码实例

ZYAppDelegate.m

[plain]

/一个用于调度一次函数的标识

static dispatch_once_t onceToken;

//Block Object

void (^executedOnlyOnce)(void) = ^{

static NSUInteger numberOfEntries = 0;

numberOfEntries++;

NSLog(@"Executed %lu time(s)", (unsigned long)numberOfEntries);

};

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

//声明一个队列

dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

//执行一次的队列

dispatch_once(&onceToken, ^{ dispatch_async(concurrentQueue,

executedOnlyOnce);

});

dispatch_once(&onceToken, ^{ dispatch_async(concurrentQueue,

executedOnlyOnce);

});

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;

}

//一个用于调度一次函数的标识

static dispatch_once_t onceToken;

//Block Object

void (^executedOnlyOnce)(void) = ^{

static NSUInteger numberOfEntries = 0;

numberOfEntries++;

NSLog(@"Executed %lu time(s)", (unsigned long)numberOfEntries);

};

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

//声明一个队列

dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

//执行一次的队列

dispatch_once(&onceToken, ^{ dispatch_async(concurrentQueue,

executedOnlyOnce);

});

dispatch_once(&onceToken, ^{ dispatch_async(concurrentQueue,

executedOnlyOnce);

});

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;

}

ZYViewController.m

[plain]

- (void)viewDidLoad

{

[super viewDidLoad];

ZYMySingleton *test = [[ZYMySingleton alloc] init];

//循环单例方法

for (int i=0; i<5; i++) {

[test sharedInstance];

}

[test release];

}

- (void)viewDidLoad

{

[super viewDidLoad];

ZYMySingleton *test = [[ZYMySingleton alloc] init];

//循环单例方法

for (int i=0; i<5; i++) {

[test sharedInstance];

}

[test release];

}

ZYMySingleton.m

[plain] view plaincopyprint?- (id) sharedInstance{

static ZYMySingleton *SharedInstance = nil;

//一个用于调度一次函数的标识

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

SharedInstance = [ZYMySingleton new];

NSLog(@"SharedInstance is ======>%@",SharedInstance);

});

return SharedInstance;

}

- (id) sharedInstance{

static ZYMySingleton *SharedInstance = nil;

//一个用于调度一次函数的标识

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

SharedInstance = [ZYMySingleton new];

NSLog(@"SharedInstance is ======>%@",SharedInstance);

});

return SharedInstance;

}

运行后控制台显示结果

iOS延时执行的四种方法

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

测试框架Unitest的运行原理,以及多个测试类中的执行顺序以及简化方法

单元测试单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一 ...

ajax多次请求,只执行最后一次的方法

ajax多次请求,只执行最后一次的方法 有时候点击按钮进行异步请求数据的时候可能网络差,用户会点击很多次,或者页面有很多相同的按钮,参数不同,但是调用的ajax相同,只想得到最后一次结果 我的思路是用 ...

ios想要取消执行延时调用的方法

想要取消执行延时调用的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideDia ...

IOS 后台执行

在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间 ...

UIViewController的生命周期及iOS程序执行顺序

UIViewController的生命周期及iOS程序执行顺序     当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                         ...

【iOS 开发】Objective - C 面向对象 - 方法 &vert; 成员变量 &vert; 隐藏封装 &vert; KVC &vert; KVO &vert; 初始化 &vert; 多态

一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...

iOS微信实现第三方登录的方法

这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下   一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2 ...

iOS控制器与视图加载方法

转载记录, 请看原文: 1. iOS中的各种加载方法(initWithNibName,loadNibNamed,initWithCoder,awakeFromNib等等)简单使用   http://w ...

随机推荐

Vue 入门指南

英文:http://vuejs.org/guide/index.html 介绍 vue.js 是用来构建web应用接口的一个库 技术上,Vue.js 重点集中在MVVM模式的ViewModel层,它连 ...

【转载】 python修饰符&commat;

@符号在python语言中具有特殊含义,用来作为修饰符使用, @修饰符有点像函数指针,python解释器发现执行的时候如果碰到@修饰的函数,首先就解析它,找到它对应的函数进行调用,并且会把@修饰下面一 ...

未能进入中断模式,原因如下:源文件&OpenCurlyDoubleQuote;XXXXXX”不属于正在调试的项目。

这个问题是由于项目文件位置变动导致的.提示框已经说的比较清楚了. 首先可以尝试[重新生成] ,一般可以解决这个问题了. 我遇到的情况是,设置配置时,不小心取消了生成选择. 所以打开配置管理器,把相关的 ...

key 限制字符的输入

//限制字符的输入 { 只能输入以下字符 } procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin  If (Key ...

【HDU 5808】 Price List Strike Back (整体二分&plus;动态规划)

Price List Strike Back There are nn shops numbered with successive integers from 11 to nn in Bytelan ...

sql server版本、组件和管理工具

以下信息由何问起收集,希望有帮助. SQL Server 版本 定义 Enterprise 作为高级版本, SQL Server Enterprise 版提供了全面的高端数据中心功能,性能极为快捷.虚 ...

sqlserver 导入数据出现 无法创建 OLE DB 取值函数。请查看列元数据是否有效

我用的是Sql Server 的导入导出功能来实现的,但是有些数据可以导进去,有些就不行.总是出现一些错误! 执行之前 (错误)消息错误 0xc0202005: 数据流任务: 在数据源中找不到列“Un ...

FreeSWITCH快速录音

一.背景 测试人员反映FreeSWITCH录音不及时,需要大约5秒的时间才能捕获到RTP流. 二.原因及解决 查了下资料,FreeSWITCH默认的录音参数配置是开启缓冲的, 即RTP流大小到达655 ...

Nginx的启动、停止、重启

启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...

mysql查找数据库中是否已经存在某张表

Sql: select count(*) from information_schema.TABLES t where t.TABLE_SCHEMA ="数据库名" and t.T ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python条件语句练习题_python学习-7 条件语句 while循环 + 练习题

1.死循环while 1 1:print(ok)结果是一直循环2.循环count 0while count < 10:print(count)count count 1print(error)3.练习题~ 使用while循环输出1 2 3 4 5 6 8 9 10count 1while count < 10 : # 或者count < 11if count 7:print( ) # 也可以添加pass&#xff…

c语言error ld returned,[Error] ld returned 1的错误

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include #include#define MAX 101#define N 1000#define M 250000/*函数功能&#xff1a;利用字符串实现超长数加减法运算 */void jianfa(int a[],int b[],int f);int lena,lenb,da1,db1; /* 把lena,l…

微信支持环信_环信客户互动云v5.39已发布:支持微信小程序接入

环信客户互动云v5.39_产品更新说明发布日期&#xff1a;2018-11-06客服模式质检中新增会话ID字段质检中新增会话ID字段&#xff0c;与历史会话中的会话ID对应&#xff0c;支持根据会话ID搜索质检会话&#xff0c;以及在质检详情中查看会话ID。便于质检员发现有问题的会话时&…

Android多线程优劣,Android 开发中用到的几个多线程解析

在开发工程中线程可以帮助我们提高运行速度&#xff0c;Android开发中我知道的线程有四个一个是老生长谈的Thread&#xff0c;第二个是asyncTask,第三个&#xff1a;TimetTask,第四个是Looper,四个多线程各有个的有点&#xff0c;Thread的运行速度是最快的&#xff0c;AsyncTas…

qc成果报告范例_QC推进这样做才是货真价值!| 看机电股份的QC报告

​❖QC小组活动是激发全体员工聪明才智、改善现场管理、提升企业综合竞争力的有效方法&#xff01;QC学习是QC活动推行的基础&#xff0c;高层参与则是QC活动推行的保障。-为进一步提升企业高层对QC的认识及重视&#xff0c; 5月20日下午&#xff0c;机电股份开展QC活动阶段汇报…

android白色字体代码,Android实现状态栏白底黑字效果示例代码

前言本文主要给大家介绍了关于Android如何实现状态栏白底黑字的相关内容&#xff0c;分享出来供大家参考学习&#xff0c;下面话不多说了&#xff0c;来一起看看详细的介绍吧。一、描述在项目中有的时候Ui设计状态栏背景颜色是白色的&#xff0c;虽然还挺好看&#xff0c;不过可…

ios 点生成线路 百度地图_iOS SDK | 百度地图API SDK

注意事项1、静态库中采用ObjectC实现&#xff0c;因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm)&#xff0c;或者在工程属性中指定编译方式&#xff0c;即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 C…

android中文转字节数组,如何将Android中的byte []转换为C中的uint8_T数组?

Java没有无符号整数类型,但相机并不真正关心.您可以安全地将从onPictureTaken()回调到达的字节数组转换为uint8_t *.旁注&#xff1a;很可能,图片将以JPEG流形式到达.更新&#xff1a;在C中实现onPictureTaken()的示例以下是您在活动中的所在地&#xff1a;mCamera Camera.ope…

python代码没有反应_没有任何编程经验者不要被Python简明手册误导。

想学python,没有任何编程经验者不要被python简明手册误导。1、python简明手册是一本好书但这本书是针对有经验的程序员看的&#xff0c;详细一点说&#xff0c;有3年以上c/java&#xff0c;、delphi/vb&#xff0c;php等有丰富项目经验的程序员看的&#xff0c;他们一般一个星期…

android iphone对比度,对比度对比:显示器优势明显_苹果 MacBook Pro_液晶显示器评测-中关村在线...

紧接着&#xff0c;我们来看看对比度方面&#xff0c;戴尔P2412Hb液晶显示器以及华硕N53S、三星305V4A、神舟A560-i7D5优雅、联想B470e、富士通LH532、戴尔Inspiron 14R-7420、索尼VPCEG-212T、惠普Pavilion g4、宏碁5755G和苹果MacBook Pro这10款热门笔记本电脑屏幕的表现如何…

layui轮播图切换会有跳动_Layui中轮播图切换函数说明

### Layui中轮播图切换函数说明 ######## 官方文档 [链接][Link 1] #####![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1bmFuOTYx_size_16_color_FFFFFF_t_70]关于轮播图的使用和讲解&#xff0c;官方文档例子都说…

android语法高亮编辑器,HighlightTextEditor

软件简介语法高亮HighlightTextEditor是一个安卓代码语法高亮控件&#xff0c;目前已经支持200多种语言&#xff0c;近90多种主题配色方案&#xff0c;同时支持lua扩展&#xff0c;以及自定义语言配置。强烈推荐&#xff0c;一款不可多得的开源控件。支持的语言&#xff1a;aba…

操作系统hpf算法事例_操作系统中常见算法汇总

一、常见作业调度(高级调度)算法1、先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单&#xff0c;公平。其缺点是没有考虑到系统中各种资源的综合使用情况&#xff0c;往往使短作业的用户不满意&#xff0c;因为短作业等…

android背景不填充,(Android Studio)应用程序背景图像不填充屏幕

我认为它正在发生&#xff0c;因为顶层容器中存在填充...这就是你的情况下的相对布局如果您的相对布局看起来像下面的代码xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"…

android 将图片路径转二进制,将图像转换为二进制图像中的android

八月8日至12日&#xff1a;52&#xff1a;32.887&#xff1a;d/dalvikvm(774)&#xff1a;GC_CONCURRENT释放71K&#xff0c;7&#xff05;的游离 2765K/2964K&#xff0c;暂停23MS 15ms&#xff0c;总计94ms08-12 08&#xff1a;52&#xff1a;33.497&#xff1a;D/gralloc_g…

python写一个路径选择app_django下创建多个app并设置urls方法

1、创建第二个app假设我们项目P下面已经有了一个默认的app&#xff0c;名字是app1。现在我想创建第二个app&#xff0c;名字时app2。进入pychram下的Terminal中&#xff0c;运行命令&#xff1a;python manage.py startapp app2此外&#xff0c;我在每个app下都建立一个urls.py…

html h1 字母,html----h1-6标签

web安全之sql注入的防御自动把引号转义 1.防御sql注入的基本原则 任何时候不应该改变用户的输入 比如用户输入单引号,那输出也要是单引号. 几种基本的防 ...Java中的装箱拆箱一) 装箱与拆箱 Java中有概念是一切皆对象,因为所有的类都默认继…

hid编程 qt_hidapi-0.7.0 OS Develop 操作系统开发 240万源代码下载- www.pudn.com

文件名称: hidapi-0.7.0下载 收藏√ [5 4 3 2 1 ]开发工具: Visual C文件大小: 1593 KB上传时间: 2015-07-01下载次数: 0提 供 者: 王成龙详细说明&#xff1a;hidapi-0.7.0源码包&#xff0c;VC编译后生成hidapi.dll&#xff0c;可在其他C编程工具中使用(比如界面功能强…

java类初始化顺序_Java 类的初始化顺序

静态代码块&#xff1a;用staitc声明&#xff0c;jvm加载类时执行&#xff0c;仅执行一次构造代码块&#xff1a;类中直接用{}定义&#xff0c;每一次创建对象时执行执行顺序优先级&#xff1a;静态块,main(),构造块,构造方法1. 构造函数public HelloWorld(){ }关于构造函数&am…

推箱子android课程设计,推箱子游戏课程设计精选.doc

推箱子游戏课程设计精选目 录Ⅰ 摘要Ⅱ 前言Ⅲ 功能描述Ⅳ 配置要求Ⅴ 总体设计一、功能模块设计二、数据结构设计三、函数功能描述四、代码实现Ⅵ 参考文献Ⅰ 摘 要推箱子游戏是一款很有趣味的游戏&#xff0c;其开发过程有一定的技巧和方法&#xff0c;其中涉及到软中断、二维…