Ошибка 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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