Sobes.tech
Junior — Middle

სად არის მეხსიერებაში ან რომელ მექანიზმში მართავს რეფერენს, რომელიც არ ზრდის რეფერენცის გამრიცხველს და არ იწვევს ობიექტის შენარჩუნებას?

sobes.tech AI

პასუხი AI-სგან

iOS-да, автоматик хәтира идарәсе (ARC) кулланганда, зәгыйфь (weak) сылтамалар төшенчәсе бар. Зәгыйфь сылтама — ул объектка сылтама, ул сылтамалар санын (retain count) арттырмый һәм объектны хәтердә тотмый.

Бу сылтамалар гадәттә ARC системасы тарафыннан идарә ителә торган махсус хәтер өлкәсендә саклана торган зәгыйфь күрсәткечләр механизмы белән тормышка ашырыла. Объект, аңа сылтаманы зәгыйфь итеп күрсәткәндә, ул автоматик рәвештә nil-га куела, бу сылтамаларның искерүен булдырмас өчен.

Шулай итеп, зәгыйфь сылтама объектның тормыш цикленә йогынты ясамый һәм аны хәтердә тотмый. Бу, мәсәлән, делегат һәм хуҗа арасында цикллы сылтамаларны булдырмау өчен файдалы.

Swiftта мисал:

class Person {
    var name: String
    weak var delegate: PersonDelegate?
    init(name: String) {
        self.name = name
    }
}

protocol PersonDelegate: AnyObject {
    func didUpdateName()
}

Монда, delegate — зәгыйфь сылтама, ул сылтамалар санын арттырмый һәм делегат объектын тотмый.