Ошибка 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.
Я понимаю, что проблема связана со статическим свойством, которое потенциально может привести к неизолированному глобальному общему изменяемому состоянию, но я не знаю, как настроить свой код, чтобы он соответствовал расширенной безопасности параллелизма Swift 6. требования. Актер Hello спроектирован так, чтобы обеспечить безопасность параллелизма, но я не могу использовать его по назначению в этом контексте.
Любые идеи, предложения или ссылки на соответствующую документацию был бы очень признателен. Заранее благодарю за помощь!

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

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