小编Ric*_* Mo的帖子

Swift 5.6 如何将异步任务放入队列

假设我有这个代码

class Duck{
    
    func walk() async {
        //do something
        print("walk start")
        try? await Task.sleep(nanoseconds: UInt64(2e9))
        print("walk end")
    }
    
    func quack() async {
        //do something...
        print("quack start")
        try? await Task.sleep(nanoseconds: UInt64(2e9))
        print("quack end")
    }
    
    func fly() async{
        //do something
        print("fly start")
        try? await Task.sleep(nanoseconds: UInt64(2e9))
        print("fly end")
    }
    
}

let duck = Duck()

Task{
    await duck.walk()
}

Task{
    await duck.quack()
}

Task{
    await duck.fly()
}
Run Code Online (Sandbox Code Playgroud)

这将打印

walk start
quack start
fly start
walk end
quack end
fly end
Run Code Online (Sandbox Code Playgroud)

这是我理解和期望的。但是如果我希望这 3 个 …

concurrency asynchronous ios async-await swift

14
推荐指数
2
解决办法
1万
查看次数

在 Swift 5.7 中使用协议作为类型时什么时候需要编写 `any`

我发现这段代码没有产生错误

protocol Foo{
    func foo()
}

let x: Foo? = nil
Run Code Online (Sandbox Code Playgroud)

当下面开始抱怨时Use of protocol 'Foo' as a type must be written 'any Foo'

protocol Foo: ObservableObject{
    func foo()
}

let x: Foo? = nil      //Use of protocol 'Foo' as a type must be written 'any Foo'
Run Code Online (Sandbox Code Playgroud)

既然ObservableObject继承了AnyObject所以我尝试了

protocol Foo: AnyObject{
    func foo()
}

let x: Foo? = nil
Run Code Online (Sandbox Code Playgroud)

这又没有给出任何错误。

any使用协议作为类型时需要写入的具体条件是什么?

existential-type swift

5
推荐指数
1
解决办法
1569
查看次数