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

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的变化【不全,随学随记】)