简体   繁体   中英

Converting non-sendable function value may introduce data races

I have a simple piece of code:

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

    private func myAsyncFunc() async {}
}

This compiles completely fine. However, if I replace the task with this:

.task(myAsyncFunc)

It doesn't work, and gives me the error below:

Converting non-sendable function value to '@Sendable () async -> Void' may introduce data races

Why is this, and how can I fix it?

As it states, the function can be marked as @Sendable . This is used to prevent data races.

Change it to this:

@Sendable private func myAsyncFunc() async {}

Note that the @Sendable must be before the access modifier.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM