Какое главное ограничение структур (struct) в Swift по сравнению с классами (class)?

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

Ответ

Главное ограничение структур — отсутствие поддержки наследования. Структуры являются value-типами и не могут наследовать свойства или методы от других структур или классов.

Сравнение с классами: Особенность Структура (struct) Класс (class)
Тип Value type (копируется) Reference type (передаётся по ссылке)
Наследование ❌ Не поддерживается ✅ Поддерживается
Деинициализатор ❌ Нет deinit ✅ Есть deinit
Слабые ссылки ❌ Неприменимо weak, unowned

Пример, демонстрирующий ограничение:

class Vehicle {
    func move() { print("Moving") }
}

// Класс может наследоваться
class Car: Vehicle { } // ✅ Работает

struct Bicycle {
    var wheels: Int
}

// Структура не может наследоваться
// struct MountainBike: Bicycle { } // ❌ Ошибка компиляции

Практический вывод: Используйте классы, когда необходима общая иерархия типов или управление жизненным циклом через ссылки. Структуры предпочтительны для простых моделей данных, где семантика копирования безопаснее.