Sobes.tech
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 болот