В Swift 6 передача класса корзины в Task.detached перестала компилироваться
final class Cart {
var items: [CartItem] = []
}
@MainActor
func checkout(cart: Cart) {
Task.detached {
let total = PriceCalculator.total(cart.items)
await showTotal(total) // @MainActor-функция
}
}
После перевода модуля на Swift 6 компилятор выдаёт ошибку о передаче значения не-Sendable типа Cart в другой контекст изоляции. Какое исправление устраняет саму гонку?
- Передать в задачу копию данных — массив структур
- Пометить Cart как @unchecked Sendable
- Вернуть режим Swift 5, где ошибки нет
- Сделать свойство items через lazy var
