Sobes.tech
Junior — Middle

Koji koraci su potrebni da bi došlo do ciklusa zadržavanja (Retain Cycle) u memoriji?

sobes.tech АИ

Одговор од АИ

Ciklus zadržavanja (Retain Cycle) u iOS se javlja kada dva ili više objekata međusobno drže snažne reference, čime se sprečava njihovo oslobađanje iz memorije, što izaziva curenje.

Da bi došlo do ciklusa zadržavanja, potrebni su sledeći koraci:

  1. Objekat A sadrži snažnu referencu na objekat B.
  2. Objekat B sadrži snažnu referencu na objekat A.
  3. Nijedan od objekata se ne oslobađa, jer brojač referenci ne dostiže nulu.

Primer:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()
a.b = b
b.a = a // Ciklus zadržavanja

Da bi se izbegao ciklus, jedna od referenci se učini slabom (weak) ili bez vlasništva (unowned). Na primer:

class B {
    weak var a: A?
}

Na ovaj način, ciklus zadržavanja nastaje kada postoje međusobne snažne reference bez prekida, što blokira oslobađanje objekata.