美文网首页
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