GCD系列是阅读官方文件和在实践中总结的一些常见的GCD用法,基本涉及全部的GCD内容形成的集合文章,文章重点在与精简和全面覆盖。
学习本集合你可以了解:
1. GCD是如何做到多线程调度的
2. 对比其他iOS的多线程方案,GCD的优势和劣势
3. 如何使用GCD相关的API我将在后续不断补充详细内容和实际案例, 欢迎关注,提问和讨论
03-dispatch_after/dispatch_time-延迟调度和操作
04-dispatch_barrier_sync/async-线程阻塞
07-dispatch_semaphore-信号量/数据同步
11-GCD死锁
单次执行一个任务,此方法中的任务只会执行一次,重复调用也没办法重复执行(单例模式中常用此方法)
static AutoPayManager *manager;
@implementation AutoPayManager
+ (instancetype)defaultPayManager {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[self alloc] init];
});
return manager;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
if (!manager) {
manager = [super allocWithZone:zone];
}
return manager;
}
dispatch_once(&onceToken, ^{
doSomething;
});