什么是 dispatch_once_t

What is dispatch_once_t

谁能告诉我什么是 dispatch_once_t 及其意义。

苹果在文档中是这么写的

A predicate for use with the dispatch_once function

我也看不懂。

+ (instancetype)sharedInstance {
    static JitsiMeet *sharedInstance = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });

    return sharedInstance;
}

有人可以解释一下吗?保留以上代码作为参考?

根据 dispatch_once 的文档,它需要一个参数 dispatch_once_t,用于测试块是否已完成。

所以你的代码解释起来很简单:

  • 您只想初始化 JitsiMeet 一次。
  • 您创建了一个令牌来检查您是否已经初始化它,并将其命名为onceToken
  • 您调用了 dispatch_once,它检查 dispatch_once_t 的值。
    • 它开始初始化sharedInstance
    • 它会在下次调用 sharedInstance 函数时跳到初始化 sharedInstance
  • dispatch_once 确保您永远不会 return nil.