Middle+
Kuidas te implementiksite mälu puhastamise läbi salvestatud tüüpide ja võtmete?
sobes.tech AI
Vastus AI-lt
Kasutanud oleks NSCache või spetsialiseeritud vahemäluhaldureid. NSCache haldab mälu automaatselt, eemaldades objekte vajaduse korral.
Näide NSCache-iga:
import Foundation
class DataCache {
private let cache = NSCache<NSString, NSData>() // Andmete vahemälu
func setData(_ data: Data, forKey key: String) {
let nsKey = key as NSString
let nsData = data as NSData
cache.setObject(nsData, forKey: nsKey) // Salvestada andmed võtmega
}
func getData(forKey key: String) -> Data? {
let nsKey = key as NSString
guard let nsData = cache.object(forKey: nsKey) else {
return nil
}
return nsData as Data // Saada andmed võtmega
}
func removeData(forKey key: String) {
let nsKey = key as NSString
cache.removeObject(forKey: nsKey) // Eemaldada andmed võtmega
}
func removeAllData() {
cache.removeAllObjects() // Tühjenda kogu vahemälu
}
}
NSCache on eelistega võrreldes NSDictionary või Swift.Dictionary-ga vahemällu salvestamisel:
- Automaatne eemaldamine: Eemaldab objekte mälu puudusel.
- Mitme-kihtne turvalisus: Turvaline mitme-kihtsete niitide jaoks.
- Nõrkade viidete kasutamine: Ei hoia tugevaid viiteid objektidele, mis takistab mälu lekkimist.
Raskemate vahemälu loogikate (näiteks kehtivusaja või suuruspiiranguga) jaoks saab luua oma klassi-halduri, mis ümbritseb NSCache või kasutab muid mehhanisme (näiteks kettal hoidmist failisüsteemi kaudu).