Выбор ответа Middle Swift Concurrency обновлено

Когда структура Sendable

Вопрос

Какая структура может быть Sendable без @unchecked?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: struct Point { let x: Double; let y: Double }. Структура Sendable, если все её хранимые свойства Sendable.

Варианты ответа

  1. struct Box { let ref: NSMutableArray }
  2. struct Point { let x: Double; let y: Double }правильный ответ
  3. struct Handler { var action: () -> Void }
  4. struct Cache { var storage: UnsafeMutablePointer<Int> }

Разбор

Структура Sendable, если все её хранимые свойства Sendable. Double Sendable, а неэкспортируемые структуры получают соответствие неявно. Изменяемый класс NSMutableArray, не-@Sendable замыкание и сырой указатель разделяют изменяемое состояние, и компилятор такое соответствие не примет. Для них есть @unchecked Sendable, но тогда безопасность на вашей совести.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.