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 ни ўзига оладиган бошқа механизмлардан фойдаланишингиз мумкин (масалан, дискда сақлаш ва файл тизими орқали бошқариш).