Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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. Ако и двете препратки бяха силни, обектите нямаше да бъдат освободени от паметта.

Важно: слабите препратки трябва да бъдат опционални (?), тъй като обектът, към който се отнасят, може да бъде изтрит.