Sobes.tech
Junior — Middle

U kojim situacijama se koristi slaba referenca na objekat?

sobes.tech АИ

Одговор од АИ

Slaba referenca (weak reference) u iOS se koristi za sprečavanje ciklusa jakih referenci (retain cycles), koji mogu dovesti do curenja memorije. Ona ne povećava brojač referenci na objekat, tako da objekat može biti oslobođen čak i ako postoje slabe reference na njega.

Tipične situacije korišćenja slabih referenci:

  • Delegati: često se deklaršu kao weak da bi se izbegao ciklus između objekta i njegovog delegata.
  • Closure-i: ako closure uhvati self, da bi se izbegao ciklus, self se hvata pomoću [weak self].
  • Veze između objekata, gde jedan objekat poseduje drugi, a drugi treba da ima referencu bez vlasništva.

Primer sa delegatom:

protocol SomeDelegate: AnyObject {
    func didUpdate()
}

class SomeClass {
    weak var delegate: SomeDelegate?
}

Na ovaj način, slaba referenca pomaže u upravljanju memorijom i sprečava curenja.