Ответ
Счетчик сильных ссылок увеличивается, когда на объект создается новая сильная (strong) ссылка. Это происходит автоматически в ARC при:
- Присваивании переменной:
let object = MyClass() // Retain count = 1 let anotherReference = object // Retain count = 2 - Передаче в функцию или замыкание (если параметр не помечен как
weak/unowned):func process(obj: MyClass) { /* Retain count увеличивается на время вызова */ } process(obj: object) - Добавлении в коллекцию (например, массив), которая хранит сильные ссылки:
var array = [MyClass]() array.append(object) // Retain count увеличивается
Важное уточнение: Счетчик увеличивается именно для сильных ссылок. Ссылки weak и unowned не увеличивают retain count, поэтому не предотвращают освобождение памяти.
Практическое правило: Рост счетчика — это «владение» объектом. Уменьшение (см. предыдущий вопрос) — это «отказ от владения».