Ответ
Стандартные коллекции Swift (Array, Dictionary, Set) реализованы как структуры (value types), а не как классы.
Ключевые последствия:
- Семантика копирования при записи (Copy-on-Write): При присваивании создаётся логическая копия. Физическое копирование данных происходит только при изменении одной из переменных, что оптимизирует производительность.
- Изоляция изменений: Модификация копии не затрагивает оригинал.
Пример:
var originalArray = [1, 2, 3]
var copiedArray = originalArray // Пока что это одна ссылка на данные (Copy-on-Write)
copiedArray.append(4) // Теперь происходит физическое копирование, и массивы расходятся
print(originalArray) // [1, 2, 3]
print(copiedArray) // [1, 2, 3, 4]
Исключение: Классы из Foundation (NSArray, NSDictionary, NSSet) являются ссылочными типами. Их использование в чистом Swift-коде обычно не рекомендуется, если не требуется совместимость с Objective-C.