Фундаментальное отличие в том, как они передают данные: классы — это ссылочные типы, а структуры — это типы-значения.
var a = MyStruct()
var b = a // b — независимая копия
var x = MyClass()
var y = x // y указывает на тот же экземпляр
Классы поддерживают:
deinit для логики очисткиСтруктуры поддерживают:
Используй структуру когда:
User, Coordinate, Product)Используй класс когда:
deinit для управления ресурсами, такими как файловые дескрипторы или наблюдателиApple рекомендует по умолчанию предпочитать структуры. Большинство типов стандартной библиотеки Swift — String, Array, Dictionary — это структуры. Переходи на класс только когда семантика ссылок или наследование действительно необходимы.
Structs в Swift выделяются в стеке и автоматически копируются при присваивании переменной или передаче в качестве параметра функции, в то время как классы выделяются в куче и используют семантику ссылок.
Новый — ещё не проверен сообществом
Вы