Sobes.tech
Middle+

Чӣ гуна тозакунии хотирасозиро тавассути намудҳои захирашуда ва калидҳо амалӣ мекунед?

sobes.tech AI

Ҷавоб аз AI

Ман NSCache ёки махсуслашган кеш менеджерларини қўллайман. NSCache автоматик равишда хотирани бошқаради ва зарур бўлганда объектларни чиқаради.

NSCache билан мисол:

import Foundation

class DataCache {
    private let cache = NSCache<NSString, NSData>() // Маълумотлар учун кеш

    func setData(_ data: Data, forKey key: String) {
        let nsKey = key as NSString
        let nsData = data as NSData
        cache.setObject(nsData, forKey: nsKey) // Маълумотларни калит орқали сақлаш
    }

    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 // Калит орқали маълумотларни олиш
    }

    func removeData(forKey key: String) {
        let nsKey = key as NSString
        cache.removeObject(forKey: nsKey) // Маълумотларни калит орқали ўчириш
    }

    func removeAllData() {
        cache.removeAllObjects() // Ҳамма кешни тозалаш
    }
}

NSCache NSDictionary ёки Swift.Dictionary га нисбатан кешлаш учун афзалликларга эга:

  • Автоматик ўчириш: Хотира етишмовчилиги бўлганда объектларни ўчиради.
  • Кўп иш парчаларида хавфсизлик: Турли иш парчаларида ишлатиш учун хавфсиз.
  • Зўф кўрсаткичлар: Объектларга кучли кўрсаткичлар тутмайди, бу хотира оқибатларининг олдини олади.

Кенгроқ кеш логикаси учун (масалан, муддати ўтган ёки ҳажм чеклови билан) ўзингизнинг менежер синфингизни яратишингиз ёки NSCache ни ўзига оладиган бошқа механизмлардан фойдаланишингиз мумкин (масалан, дискда сақлаш ва файл тизими орқали бошқариш).