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

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

Ответ

Классы (class) в Swift используются, когда требуется ссылочная семантика и управление идентичностью объекта.

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

  1. Наследование: Когда нужно создать иерархию типов, где подклассы наследуют и переопределяют поведение родителя.
    class Vehicle {
        var currentSpeed = 0.0
        func makeSound() { print("...") }
    }
    class Car: Vehicle {
        var gear = 1
        override func makeSound() { print("Vroom!") }
    }
  2. Разделяемое состояние: Когда несколько частей кода должны ссылаться и модифицировать один и тот же экземпляр.
  3. Управление жизненным циклом: При необходимости выполнить cleanup в деинициализаторе (deinit).
  4. Совместимость с Objective-C: Если класс должен быть доступен в Objective-C-коде (наследуется от NSObject).

Ключевое отличие от структур: Экземпляры класса передаются по ссылке. При присваивании или передаче в функцию создается новая ссылка на тот же объект в памяти.