簡體   English   中英

轉換不可發送的 function 值可能會引入數據競爭

[英]Converting non-sendable function value may introduce data races

我有一段簡單的代碼:

struct ContentView: View {
    var body: some View {
        Text("Hello world!")
            .task {
                await myAsyncFunc()
            }
    }

    private func myAsyncFunc() async {}
}

這編譯得很好。 但是,如果我用這個替換任務:

.task(myAsyncFunc)

它不起作用,並給我以下錯誤:

將不可發送的 function 值轉換為“@Sendable () async -> Void”可能會引入數據競爭

為什么會這樣,我該如何解決?

正如它所說, function 可以標記為@Sendable 這用於防止數據競爭。

將其更改為:

@Sendable private func myAsyncFunc() async {}

請注意, @Sendable必須在訪問修飾符之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM