GCD全解-06-dispatch_once

版权声明:知识版权是属于全人类的! 欢迎评论与转载!!! https://blog.csdn.net/zhuge1127/article/details/82464798

单次执行一个任务,此方法中的任务只会执行一次,重复调用也没办法重复执行(单例模式中常用此方法)

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;
});

猜你喜欢

转载自blog.csdn.net/zhuge1127/article/details/82464798