小编AKI*_*MAR的帖子

在并发执行的代码中引用捕获的 var

我正在快速尝试新的异步/等待模式,但遇到了一些让我感到困惑的事情。

\n
struct ContentView: View {\n    var body: some View  {\n        Text("Hello World!")\n            .task {\n                var num = 1\n\n                Task {\n                    print(num)\n                }\n\n                Task {\n                    print(num)\n                }\n            }\n    }\n\n    func printScore() async {\n        var score = 1\n\n        Task { print(score) }\n        Task { print(score) }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

有人可以澄清一下上面的屏幕截图,为什么编译器只抱怨捕获的var内部函数,而在使用结构体的计算属性上的修饰符printScore() 执行相同操作时不抱怨(即第 14-24 行)?taskbodyContentView

\n

这是我提出的示例,并对编译器行为感到困惑。我还将编译器设置“严格并发检查\xe2\x80\x9d 构建设置”更改为\xe2\x80\x9cComplete\xe2\x80\x9d,但仍然不这样做没有看到编译器抱怨。

\n

ios async-await swift swiftui swift-concurrency

4
推荐指数
1
解决办法
1451
查看次数

标签 统计

async-await ×1

ios ×1

swift ×1

swift-concurrency ×1

swiftui ×1