美文网首页
swift中使用dispatch_once

swift中使用dispatch_once

作者: 番茄炒西红柿啊 | 来源:发表于2018-09-27 16:37 被阅读54次
  • 在Swift 3.0中原有的Dispatch once已经被废弃了.
  • 我们可以通过给DispatchQueue实现一个扩展方法来实现原有的功能:
extension DispatchQueue {
    private static var _onceToken = [String]()
    
    class func once(token: String = "\(#file):\(#function):\(#line)", block: ()->Void) {
        objc_sync_enter(self)
        
        defer
        {
            objc_sync_exit(self)
        }

        if _onceToken.contains(token)
        {
            return
        }

        _onceToken.append(token)
        block()
    }
}

// 使用
DispatchQueue.once {
  // your code
}
        
DispatchQueue.once(token: "identify") {
   // your code
 }

参考: Swift 3.0之后实现Dispatch once扩展

相关文章

  • 多线程开发

    异步 延迟 异步延迟 once dispatch_once在Swift中已经被废弃,可以使用类型属性或者全局变量\...

  • swift_单例的创建

    swift中私有变量是会自定调用dispatch_once的 class Network: NSObject {/...

  • [iOS] 安全唯一的单例模式

    Swift swift 3.0中废弃了dispatch_once,这里只记录一个标准的单例写法,具体相关的内容,可...

  • Swift中的dispatch_once

    我们都知道,从swift3.0开始,dispatch_once被废弃了,而是开始推荐大家使用全局let变量,懒加载...

  • swift两种方式实现单例

    在swift中有两种方法可以实现单例模式。 一、使用dispatch_once ,代码如下: 二、利用let只能赋...

  • Swift 3

    把之前的项目适配Swift3。满满的恶意。 dispatch_once 在使用swizzle的时候一定会用到,但是...

  • CGD中dispatch_once使用说明(仅执行一次)

    dispatch_once概念解析 整个程序运行中只会执行一次,使用dispatch_once可以简化代码并且彻底...

  • Swift-没有dispatch_once实现只调用一次

    早在Swift 3的时候,dispatch_once就被苹果废弃了,并且推荐使用懒初始化全局变量方案代替。 官方推...

  • swift中使用dispatch_once

    在Swift 3.0中原有的Dispatch once已经被废弃了. 我们可以通过给DispatchQueue实现...

  • Swift学习之多线程

    一、异步 二、延迟执行 三、多线程-once dispatch_once在Swift中已经被废弃,可以用类型属性或...

网友评论

      本文标题:swift中使用dispatch_once

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