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. Ако и двете препратки бяха силни, обектите нямаше да бъдат освободени от паметта.
Важно: слабите препратки трябва да бъдат опционални (?), тъй като обектът, към който се отнасят, може да бъде изтрит.