iOS开发-GCD 常见用法二(一次性代码)
来源:互联网 发布:网络客服主管计划 编辑:程序博客网 时间:2024/06/01 09:09
一、一次性代码
1.实现一次性代码
需求:点击控制器只有第一次点击的时候才打印。
实现代码:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_log==NO) {
NSLog(@"该行代码只执行一次");
_log=YES;
}
{
if (_log==NO) {
NSLog(@"该行代码只执行一次");
_log=YES;
}
}
缺点:这是一个对象方法,如果又创建一个新的控制器,那么打印代码又会执行,因为每个新创建的控制器都有自己的布尔类型,且新创建的默认为NO,因此不能保证改行代码在整个程序中只打印一次。
2.使用dispatch_once一次性代码
使用dispatch_once函数能保证某段代码在程序运行过程中只被执行1次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// 只执行1次的代码(这里面默认是线程安全的)
});
整个程序运行过程中,只会执行一次。
代码示例:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"该行代码只执行一次");
});
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"该行代码只执行一次");
});
}
1 0
- iOS开发-GCD 常见用法二(一次性代码)
- iOS开发多线程篇—GCD的常见用法(二)
- iOS开发-GCD 常见用法一(延迟执行)
- IOS开发—GCD常见用法
- iOS开发多线程-GCD的常见用法
- GCD常见的几种用法-- 延迟\一次性代码\多线程同时遍历\栈栏
- GCD一次性代码
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- IOS开发多线程—08GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法(一)
- iOS开发多线程篇—GCD的常见用法
- iOS开发多线程篇—GCD的常见用法
- 谈谈多态
- Oracle:PL/SQL Developer 创建一个新用户
- Java基础练习选择题(4)
- PHP-迭代器与序列化
- Java String类的秘密
- iOS开发-GCD 常见用法二(一次性代码)
- NSUserDefaults 的坑知道吗?
- 练习二 1009 连连看问题
- Redux之combineReducers(reducers)详解
- Java中字符串反转的七种方法
- Android API Guides---Content Providers
- 蓝桥杯—— 算法训练 整除问题
- SwitchCompat修改颜色
- C++中子类父类构造函数和析构函数