Sobes.tech
Назад к вопросам
Junior — Middle
69

Каким образом происходит распределение и освобождение памяти для ссылочных данных типов?

Компании, где спрашивали
bip.ru

Ответ от нейросети

sobes.tech AI

В iOS для ссылочных типов (например, классов) память выделяется динамически в куче (heap). Когда создаётся объект класса, система выделяет для него память в куче и возвращает ссылку на этот объект.

Освобождение памяти происходит с помощью автоматического подсчёта ссылок (ARC — Automatic Reference Counting). Каждый объект хранит счётчик ссылок — количество активных ссылок на него. Когда создаётся новая ссылка, счётчик увеличивается, когда ссылка удаляется или становится nil — уменьшается. Как только счётчик достигает нуля, объект автоматически удаляется из памяти.

Пример:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван") // счетчик ссылок = 1
var person2 = person1 // счетчик ссылок = 2
person1 = nil // счетчик ссылок = 1
person2 = nil // счетчик ссылок = 0, объект Person удаляется из памяти

Таким образом, разработчику не нужно вручную освобождать память — ARC управляет этим автоматически.