Sobes.tech
Junior — Middle

Kuidas rakendada objektide salvestamist nõrkade viidetega kogumis?

sobes.tech AI

Vastus AI-lt

iOS-is, objektide nõrkade viidete kasutamine kogudes hoidmisel võib kasutada mitmeid lähenemisviise, kuna standardkogud (näiteks Array, Set, Dictionary) hoiavad tugevaid viiteid objektidele, mis võib põhjustada objektide hoidmise mälu pikka aega, kui see pole vajalik.

Peamised viisid:

  1. Kasutada weak omadusega pakki

Luuakse pakki klass, mis sisaldab nõrka viidet objekti. Need pakid lisatakse kogusse objekti asemel.

class WeakRef<T: AnyObject> {
    weak var value: T?
    init(value: T) {
        self.value = value
    }
}

var weakArray = [WeakRef<MyClass>]()

let obj = MyClass()
weakArray.append(WeakRef(value: obj))
  1. Kasutada NSHashTable või NSMapTable

Need Foundationi klassid võimaldavad otse hoida nõrku viiteid.

let weakSet = NSHashTable<MyClass>.weakObjects()
weakSet.add(obj)

NSHashTable koos weakObjects valikuga hoiab automaatselt objekte nõrgalt, ning kui objekt vabastatakse, eemaldatakse see kogust.

Seega, iOS-is kasutatakse tavaliselt NSHashTable või pakke koos weak omadustega nõrkade objektide hoidmiseks kogudes.