Ответ
Strong ссылка (strong reference) — это ссылка по умолчанию, которая увеличивает счетчик владения (retain count) объекта в системе ARC (Automatic Reference Counting), тем самым удерживая его в памяти и предотвращая освобождение.
Принцип работы: Пока существует хотя бы одна strong-ссылка на объект, он продолжает существовать. Когда последняя strong-ссылка обнуляется (например, переменной присваивается nil), ARC освобождает память.
Пример:
class Person {
let name: String
init(name: String) { self.name = name }
deinit { print("(name) освобожден") }
}
var reference1: Person? = Person(name: "Анна") // Retain count = 1
var reference2: Person? = reference1 // Retain count = 2
reference1 = nil // Retain count = 1 (объект жив)
reference2 = nil // Retain count = 0 -> срабатывает deinit
// Консоль: "Анна освобожден"
Ключевые моменты:
- Использование: Для выражения владения объектом. Это основной способ хранения и передачи объектов.
- Проблема: Retain Cycle (цикл сильных ссылок) — когда два объекта удерживают друг друга strong-ссылками, они никогда не будут освобождены. Решается использованием
weakилиunownedссылок для разрыва цикла.