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:
- Kasutada
weakomadusega 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))
- Kasutada
NSHashTablevõiNSMapTable
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.