Sobes.tech
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).