Sobes.tech
Junior — Middle

Ako implementovať pridanie objektu do poľa tak, aby to nevedie k zvýšeniu počtu pevných odkazov na neho?

sobes.tech AI

Odpoveď od AI

Ak chcete pridať objekt do poľa bez zvýšenia počtu silných odkazov naň, môžete použiť pole slabých odkazov. Na iOS sa to často robí pomocou NSPointerArray s možnosťou slabých odkazov alebo obalením objektov do slabých kontajnerov.

Príklad s NSPointerArray:

let weakArray = NSPointerArray.weakObjects()

class MyObject {}

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

// Teraz weakArray obsahuje slabý odkaz na obj, bez zvyšovania počtu silných odkazov

Týmto spôsobom objekty v poli nie sú držané silno, a keď sa objekt uvoľní, odkaz sa automaticky stáva nil.

Ak používate bežné pole [MyObject], pridanie objektu do neho zvýši počet silných odkazov, čo nie je vhodné pre tento úlohu.