Junior — Middle
Жеңил шилтемелердин ички ишке ашылышын жана алар эс тутумда кантип иштешээрин түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
iOS-теги (жана жалпы Objective-C/Swiftте) злабки шилтемелер (weak references) — бул объекттерге шилтемелер, алар референц санын (retain count) көбөйтпөйт. Бул дегендик, эгер объектке күчтүү шилтемелер калбаса, ал эселип, злабки шилтемелер болсо да, эселип кетиши мүмкүн.
Ички ишке ашыруу:
- Злабки шилтеме объектке көрсөткүч сактайт, бирок аны эселип калбайт.
- Эгер злабки шилтеме көрсөтүп жаткан объект өчүрүлсө, ал автоматтык түрдө nil болуп калат, ошондуктан уяча көрсөткүчтөрдөн сактайт.
Бул ARC (Automatic Reference Counting) механизми аркылуу иштейт; ал күчтүү шилтемелерди көзөмөлдөйт жана объект бошотулганда злабки шилтемелерге кабар берет.
Swiftте колдонуу мисалы:
class Person {
var name: String
init(name: String) { self.name = name }
}
class Apartment {
weak var tenant: Person? // злабки шилтеме
}
var person: Person? = Person(name: "Alex")
var apartment = Apartment()
apartment.tenant = person
person = nil // Person объекти бошотулат, apartment.tenant автоматтык түрдө nil болот