Ответ
Главное ограничение структур — отсутствие поддержки наследования. Структуры являются 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 { } // ❌ Ошибка компиляции
Практический вывод: Используйте классы, когда необходима общая иерархия типов или управление жизненным циклом через ссылки. Структуры предпочтительны для простых моделей данных, где семантика копирования безопаснее.