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.