Ошибка Swift 6 с неизолированным глобальным общим изменяемым состоянием в EnvironmentKeyIOS

Программируем под IOS
Ответить
Гость
 Ошибка Swift 6 с неизолированным глобальным общим изменяемым состоянием в EnvironmentKey

Сообщение Гость »


Я столкнулся с проблемой безопасности параллелизма в режиме StrictConcurrency Swift 5.10, которую пытаюсь решить. Я работаю со структурой EnvironmentKey, которая включает статическое свойство, определенное как асинхронное замыкание, возвращающее необязательный пользовательский актер. Вот упрощенный фрагмент кода:

Код: Выделить всё

struct DataHandlerKey: EnvironmentKey {
static var defaultValue: @Sendable () async -> Hello? = { nil }
}

actor Hello {}
Значение по умолчанию — это замыкание, отмеченное @Sendable, которое асинхронно возвращает необязательный экземпляр субъекта Hello. Однако Swift 5.10 с компилятором StrictConcurrency выдает ошибку безопасности параллелизма, заявляя:

Код: Выделить всё

Static property 'defaultValue' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in Swift 6.
I understand that the issue is related to the static property potentially introducing non-isolated global shared mutable state, but I'm unsure how to adjust my code to adhere to Swift 6's enhanced concurrency safety requirements. The Hello actor is designed to be concurrency-safe, yet I'm unable to use it as intended in this context.
Any insights, suggestions, or references to relevant documentation would be greatly appreciated. Thank you in advance for your help!


Источник: https://stackoverflow.com/questions/781 ... ronmentkey
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»