В каких случаях в Swift следует использовать структуры (`struct`)?

«В каких случаях в Swift следует использовать структуры (`struct`)?» — вопрос из категории ООП, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Структуры (struct) в Swift являются типом по умолчанию для моделирования данных. Их следует использовать, когда нужна семантика значений (value semantics).

Основные сценарии применения:

  1. Простые модели данных: Для представления сущностей, которые можно описать их свойствами (например, пользователь, точка, заказ).
    struct Point {
        var x: Double
        var y: Double
    }
    let origin = Point(x: 0, y: 0)
    var point2 = origin // Создается полная копия
    point2.x = 5 // origin.x остается 0
  2. Иммутабельность и предсказуемость: Изменение копии не влияет на оригинал, что упрощает рассуждение о коде.
  3. Потокобезопасность: Поскольку данные копируются, работа с ними в разных потоках безопаснее.
  4. Высокая производительность: Для небольших типов копирование часто эффективнее, чем подсчет ссылок (ARC), используемый классами.

Когда выбрать класс: Если требуется наследование, ссылочная семантика или управление жизненным циклом через deinit.