Классы — ссылочные типы, структуры — значимые.
Основные отличия:
- Наследование: Классы поддерживают наследование, структуры — нет.
- Type Casting: Позволяет проверять и интерпретировать тип экземпляра класса во время выполнения.
- Deinitialization: Классы имеют деинициализаторы (
deinit) для освобождения ресурсов, структуры — нет.
- Reference Counting: Классы используют автоматический подсчет ссылок (ARC) для управления памятью. Структуры копируются при передаче или присваивании (copy-on-write может применяться для оптимизации).
- Mutating methods: Методы, изменяющие свойства экземпляра структуры или перечисления, должны быть помечены ключевым словом
mutating. Для классов это не требуется.
Пример создания:
swift
Пример поведения при присваивании:
swift