美文网首页
dispatch_once

dispatch_once

作者: Breezes | 来源:发表于2021-03-22 23:33 被阅读0次

关于对 dispatch_once 函数的解释


image.png

大意为:执行这个 block 一次,切只执行一次
在 iOS 内常用于创建单例
为什么这个函数能保证 block 只执行一次呢?

_dispatch_once(dispatch_once_t *predicate,
        DISPATCH_NOESCAPE dispatch_block_t block)
{
    if (DISPATCH_EXPECT(*predicate, ~0l) != ~0l) {
        dispatch_once(predicate, block);
    } else {
        dispatch_compiler_barrier();
    }
    DISPATCH_COMPILER_CAN_ASSUME(*predicate == ~0l);
}

通过声明一个 static类型的 dispatch_once_t 标记

相关文章

网友评论

      本文标题:dispatch_once

      本文链接:https://www.haomeiwen.com/subject/mfcwpktx.html