Sobes.tech
Junior — Middle

Hogyan lehet megvalósítani egy objektum hozzáadását egy tömbhöz úgy, hogy ez ne növelje az erős hivatkozások számát rá?

sobes.tech MI

Válasz az MI-től

Egy objektum hozzáadása egy tömbhöz anélkül, hogy növelnénk a rá vonatkozó erős hivatkozások számát, használhatunk gyenge hivatkozásokat tartalmazó tömböt. iOS-en ezt gyakran az NSPointerArray gyenge hivatkozási lehetőségével vagy az objektumok gyenge konténerekbe csomagolásával érik el.

NSPointerArray példával:

let weakArray = NSPointerArray.weakObjects()

class MyObject {}

var obj = MyObject()
weakArray.addPointer(Unmanaged.passUnretained(obj).toOpaque())

// Most a weakArray gyenge hivatkozást tartalmaz az obj-re, anélkül, hogy növelné a erős hivatkozások számát

Így a tömbben lévő objektumokat nem tartjuk erősen, és amikor az objektum felszabadul, a hivatkozás automatikusan nil lesz.

Ha egy normál [MyObject] tömböt használunk, az objektum hozzáadása növeli az erős hivatkozások számát, ami nem megfelelő ehhez a feladathoz.