美文网首页
Swift3.0之后 GCD的变化【不全,随学随记】

Swift3.0之后 GCD的变化【不全,随学随记】

作者: 小白猿 | 来源:发表于2018-12-05 20:55 被阅读3次

    1.一次性代码 disptach_once(以及dispatch_once_t) 取消了

    OC中常见的一次性代码,比如OC经典的单例写法

    +(id) getInstance{
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            instance = [[self alloc]init];
        });
        return instance;
    }
    

    一次性代码在OC中比较多就是单例,当然也还有一些其他的用处,不一一列举,在Swift3.0的一次性代码的替代写法如下

    class Foo {
        private static let sharedInstance = Foo()
        class var sharedFoo {
            return sharedInstance
        }
    }
    

    或者更为简洁的写法

    class Foo {
        static let shared = Foo()
    }
    

    2. 重复性代码 dispatch_apply

    dispatch_apply(size_t iterations,  dispatch_queue_t queue, void(^ block)(size_t))
    

    三个参数分别是 执行次数执行队列执行的具体操作(代码块)

    在Swift 简化为

     DispatchQueue.concurrentPerform(iterations: 5) { (index) in
                print("----- \(index)")
    }
    

    相比OC的代码,Swift去掉了队列的参数,并且通过打印结果可以看出,Swift 默认就是并发队列

    打印结果
    ----- 0
    ----- 3
    ----- 2
    ----- 4
    ----- 1
    

    参考: GCD in Swfit 3.0

    相关文章

      网友评论

          本文标题:Swift3.0之后 GCD的变化【不全,随学随记】

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