GCD使用(四)操作只执行一次
来源:互联网 发布:mac终端命令 编辑:程序博客网 时间:2024/05/16 07:05
1。dispatch_once ( &dispatch_once_t , block )
e.g.
static dispatch_once_t onceToken;
void (^executedOnlyOnce)(void) = ^{
static NSUInteger numberOfEntries = 0;
numberOfEntries++;
NSLog(@"Executed %lu time(s)", (unsigned long)numberOfEntries);
};
-(void)action{
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); //executedOnlyOnce不执行
});
}
2。单例的使用
@implementation MySingleton
+(instancetype) sharedInstance{
static MySingleton *SharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
SharedInstance = [MySingleton new]; //保证只被实例化一次
});
return SharedInstance;
}
@end
postscript:
id 和 instancetype 区别:对于类方法的返回类型,使用instancetype更合适,它能保证编译器正确推断方法的返回类型,但instancetype不能做参数
使用id时,本质上是不会作类型检查,对于alloc,init返回类本身类型时还是有用
- GCD使用(四)操作只执行一次
- GCD 只执行一次
- GCD的定义及使用详解(同步异步、并发串行、线程间通信、延时执行、只执行一次代码)
- GCD使用(三)执行延时操作
- IOS开发(64)之GCD任务最多只执行一次
- ajax只执行一次
- (function() {})();只执行一次
- 只执行一次callback
- IOS开发(60)之使用GCD执行UI操作
- GCD使用(一)执行与UI有关的操作
- GCD使用(二)执行与UI无关的操作
- iOS代码只执行一遍(GCD)
- 循环体只执行了一次
- setInterval 为什么只执行一次
- java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql
- setInterval()定时器只执行一次的解决
- 使用JS监听鼠标滚轮事件,并且滑动一次只执行一次事件方法
- Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)
- Sizeof与Strlen的区别与联系(转)
- Android如何着色字符串的特定部分
- 关于android自适应布局的一点点心得
- 魔力宝贝收费简评
- 12306应该如何应对黄牛抢票
- GCD使用(四)操作只执行一次
- struts2取值
- Linux SVN常用命令
- android_控件之viewstub
- Comparable接口的实现和使用
- VC++中对文件的写入和读取
- Notification的特殊应用
- 深入分析java web 技术内幕_笔记_一
- 在Struts2的Action中取得请求参数值的几种方法