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

Каким образом можно сделать слабую ссылку в языке программирования?

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

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

sobes.tech AI

В iOS (Swift) для создания слабой ссылки используется ключевое слово weak. Слабая ссылка не увеличивает счетчик ссылок на объект, что помогает избежать циклов удержания и утечек памяти.

Пример:

class Person {
    var name: String
    weak var apartment: Apartment? // слабая ссылка

    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    var tenant: Person? // сильная ссылка

    init(unit: String) {
        self.unit = unit
    }
}

// Использование:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john

В этом примере Person содержит слабую ссылку на Apartment, чтобы избежать цикла удержания между Person и Apartment. Если бы обе ссылки были сильными, объекты не освободились бы из памяти.

Важно: слабые ссылки должны быть опциональными (?), так как объект, на который они ссылаются, может быть удалён.