Сколько сильных ссылок имеет вновь созданный объект класса в Swift?

«Сколько сильных ссылок имеет вновь созданный объект класса в Swift?» — вопрос из категории Управление памятью, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В момент создания экземпляра класса в Swift у него появляется одна сильная ссылка.

Как это работает: Сильная ссылка (strong reference) увеличивает счётчик ссылок (retain count) объекта, удерживая его в памяти. ARC (Automatic Reference Counting) освобождает память, когда счётчик сильных ссылок достигает нуля.

Пример:

class MyClass {}

// Создание объекта. Переменная `firstReference` держит первую сильную ссылку.
let firstReference = MyClass() // Retain count = 1

// Присвоение другой переменной создаёт вторую сильную ссылку.
let secondReference = firstReference // Retain count = 2

// Помещение в массив создаёт третью сильную ссылку.
let array = [firstReference] // Retain count = 3

// Когда `firstReference`, `secondReference` и `array` выйдут из области видимости,
// retain count уменьшится до 0, и память будет освобождена.

Важное отличие от value-типов: Для структур (struct) и перечислений (enum) концепция ссылок не применяется. При присваивании или передаче в функцию создаётся новая, независимая копия данных.