Sobes.tech
Junior — Middle

Kiek minimaliai objektų reikia, kad susidarytų nuorodų ciklas?

sobes.tech AI

Atsakymas iš AI

Minimalus objektų skaičius, reikalingas stipriam ciklui susidaryti, yra du.

Ciklas susidaro, kai du objektai turi stiprias nuorodas vienas į kitą, dėl ko ARC (Automatinis nuorodų skaičiavimas iOS) sistema negali laisvai atlaisvinti atminties, nes kiekvienas objektas palaiko nuorodą į kitą.

Pavyzdys:

class A {
    var b: B?
}

class B {
    var a: A?
}

let objectA = A()
let objectB = B()

objectA.b = objectB
objectB.a = objectA

Čia, objectA ir objectB vienas kitą nuorodoja, sukurdami ciklą, kuris gali sukelti atminties nutekėjimą, jei nenaudojamos silpnos (weak) arba neįsipareigojusios (unowned) nuorodos.