Temporary Directory — bu nima, vaqtinchalik fayllar va xotira boshqaruvi

Muallif: IT Sectr Nashr etilgan: 2026-07-10 O'qish vaqti: 10 daq

Temporary Directory (tmp) — bu iOS ilovasining sandboxidagi juda qisqa muddatli ma'lumotlarni saqlash uchun mo‘ljallangan katalog bo‘lib, ular faqat joriy ilova sessiyasida kerak bo‘ladi. Apple File System Programming Guide (2024) ma'lumotlariga ko‘ra, tizim har bir ilova tugatilganda yoki qurilma qayta ishga tushirilganda tmp-ni tozalashi mumkin. Caches Directory-dan farqli o‘laroq, tmp-dagi vaqtinchalik fayllar ishga tushirishlar o‘rtasida saqlash uchun mo‘ljallanmagan — dasturchi ulardan foydalangandan so‘ng ularni aniq o‘chirishi kerak, aks holda diskda joy egallaydi.

Asosiy

  • Temporary Directory — faqat joriy ilova sessiyasida kerak bo‘ladigan ma'lumotlar uchun katalog.
  • iOS tizimi qurilma qayta ishga tushirilganda yoki ilova tugatilganda tmp-ni tozalashi mumkin.
  • tmp-dagi fayllar iCloud va iTunes zaxira nusxalariga kiritilmaydi.
  • tmp-ga yo‘l Swift yoki Objective-C-da NSTemporaryDirectory() orqali olinadi.
  • Dasturchi foydalanishdan so‘ng tmp-dan fayllarni o‘zi o‘chirishi kerak.

iOS-da Temporary Directory nima?

Temporary Directory (shuningdek tmp nomi bilan tanilgan) — bu iOS ilovasi sandboxi ichidagi katalog bo‘lib, umri joriy sessiya bilan chegaralangan ma'lumotlarni saqlash uchun mo‘ljallangan. Bu sandboxning barcha kataloglari orasida eng qisqa muddatli xotiradir.

iOS tmp-ni oraliq fayl saqlashni talab qiladigan operatsiyalar uchun taqdim etadi: faylni Documents-ga ko‘chirishdan oldin yuklab olish, eksport qilishdan oldin vaqtinchalik nusxa yaratish, oqim ma'lumotlarini buferlash. Operatsiya tugagandan so‘ng, vaqtinchalik fayllar o‘chirilishi kerak.

Apple Developer Documentation (2024) ma'lumotlariga ko‘ra, tmp katalogi noyobdir, chunki uning yo‘li ilova ishga tushirishlari o‘rtasida o‘zgarishi mumkin. iOS har bir ishga tushirishda tmp uchun yangi yo‘l yaratadi — bu oldingi sessiya ma'lumotlarining tasodifan o‘qilmasligini ta'minlaydi. Dasturchi hech qachon tmp yo‘lini ishga tushirishlar o‘rtasida saqlamasligi kerak.

Muhim: Caches Directory-dan farqli o‘laroq, bu erda ma'lumotlar bir necha ishga tushirishni omon qolishi mumkin, tmp esa uzoq muddatli istiqbolda sessiyalar o‘rtasida ma'lumot saqlashni kafolatlamaydi. Bu haqiqatan vaqtinchalik ma'lumotlarni saqlashning eng ishonchli usulidir.

Temporary Directory-ga yo‘lni qanday olish mumkin

Swift-da tmp-ga yo‘l olish uchun NSTemporaryDirectory() global funksiyasidan yoki FileManager.temporaryDirectory-dan foydalaniladi. Bu sandboxning barcha kataloglari orasida eng oddiy API-dir.

swift
import Foundation

// Variant 1: NSTemporaryDirectory()
let tempDir = NSTemporaryDirectory()
let tempFile = (tempDir as NSString)
    .appendingPathComponent("export_temp.pdf")

// Variant 2: FileManager.temporaryDirectory (URL)
let tempURL = FileManager.default.temporaryDirectory
let exportURL = tempURL.appendingPathComponent("export_temp.pdf")

Objective-C bir xil global funksiyadan NSTemporaryDirectory() foydalanadi. Natija — ilovaning vaqtinchalik katalogiga to‘liq yo‘l bo‘lgan satr.

objective-c
@import Foundation;

NSString *tempDir = NSTemporaryDirectory();
NSString *tempFile = [tempDir stringByAppendingPathComponent:@"temp_data.bin"];

Boshqa kataloglardan asosiy farq: NSTemporaryDirectory() domen yoki maskani ko‘rsatishni talab qilmaydi — bu global funksiyadir. Biroq, yo‘l keyingi ishga tushirishda o‘zgarishi mumkin, shuning uchun uni hech qachon UserDefaults yoki boshqa doimiy xotirada saqlamang.

tmp-da qanday ma'lumotlarni saqlash kerak

Temporary Directory qat’iy belgilangan stsenariylar to‘plami uchun mo‘ljallangan. Dasturchilar tez-tez tmp-ni Caches bilan aralashtirib, tmp-da bir sessiyadan uzoqroq yashashi kerak bo‘lgan ma'lumotlarni joylashtiradilar. Keling, to‘g‘ri foydalanish holatlarini ko‘rib chiqaylik.

Eksport paytida oraliq fayllar

Fayllar ma'lumotlar eksporti jarayonida yaratiladi: pochta orqali jo‘natishdan oldin hisobotning vaqtinchalik nusxasi, yuklab olishdan oldin siqilgan arxiv, format konvertatsiyasining oraliq fayli. Eksport tugagandan so‘ng, fayl o‘chirilishi kerak.

Oqim ma'lumotlarini buferlash

Vaqtinchalik buferlar real vaqtda qayta ishlanadigan audio, video yoki oqim ma'lumotlarini yozish uchun. Masalan, doimiy xotirada saqlashdan oldin ovoz yozish yoki striming paytida video oqimini buferlash.

StsenariyKatalogAsoslash
Eksport PDF jo‘natishdan oldintmpFayl jo‘natilgandan so‘ng kerak emas
Kesh rasmlarCachesSessiyalar orasida foydali
Yuklash faylni ko‘chirishdan oldintmpOraliq saqlash
Jurnallar sessiyatmpFaqat sessiyada dolzarb
Tahrirlash hujjattmpSaqlashdan oldingi versiya

Agar ma'lumotlar faqat shu erda va hozir kerak bo‘lsa — tmp dan foydalaning. Agar keyingi sessiyada kerak bo‘lishi mumkin bo‘lsa — Caches dan foydalaning. Agar ma'lumot yo‘qolishi mumkin bo‘lmasa — Documents dan foydalaning.

Vaqtinchalik fayllarning hayot aylanishi

iOS tmp ning hayot aylanishini sandboxning boshqa kataloglaridan farqli boshqaradi. Ushbu tsiklni tushunish ilovada fayl saqlash tizimini to‘g‘ri loyihalash uchun juda muhimdir.

Har bir ishga tushirishda iOS tmp uchun yangi yo‘l ajratishi mumkin. Oldingi yo‘l mavjud bo‘lmaydi, garchi fizik fayllar qurilma qayta ishga tushirilguncha diskda qolishi mumkin. Aynan shuning uchun Apple tmp yo‘lini sessiyalar orasida saqlashni qat’iy tavsiya etmaydi.

Apple Tech Note TN2150 (2024) ma'lumotlariga ko‘ra, tizim quyidagi hollarda tmp-ni tozalashi mumkin: qurilma qayta ishga tushirilganda, diskdagi joy limitiga erishilganda, ilova tushirilganda (Offload). Caches-dan farqli o‘laroq, tmp bir nechta ishga tushirishlar davomida ham ma'lumot saqlash uchun mo‘ljallanmagan — bu sandboxdagi eng ishonchsiz xotiradir.

Dasturchi FileManager.removeItem(at:) yordamida operatsiya tugagandan so‘ng vaqtinchalik fayllarni aniq o‘chirishi shart. O‘chirilmagan fayllar tmp-da to‘planadi va diskda joy egallaydi — iOS ularning yaqin kelajakda avtomatik tozalanishini kafolatlamaydi.

Temporary Directory vs Caches Directory

tmp va Caches ni taqqoslash dasturchilarga saqlash katalogini tanlashda to‘g‘ri qaror qabul qilishga yordam beradi. Tanlovdagi xato ma'lumotlarning muddatidan oldin yo‘qolishiga yoki asossiz joy sarfiga olib kelishi mumkin.

ParametrTemporary DirectoryCaches Directory
Hayot davomiyligiFaqat joriy sessiyaSessiyalar orasida (kafolatsiz)
Yo‘l o‘zgarishiHar bir ishga tushirishda o‘zgarishi mumkinBarqaror yo‘l
Avtomatik tozalashQayta ishga tushirish, tushirishdaJoy yetishmasa
O‘chirish dasturchi tomonidanOperatsiyadan so‘ng majburiyLimit oshib ketganda tavsiya etiladi
FoydalanishOraliq operatsiyalarDoimiy kesh

Amaliy qoida: yaratilgandan so‘ng bir necha soniya yoki daqiqa ichida o‘chiriladigan ma'lumotlar uchun tmp ni tanlang. Sessiyalar orasida bir necha soat yoki kun davomida saqlashga arziydigan, ammo qayta tiklanadigan ma'lumotlar uchun Caches ni tanlang.

tmp bilan ishlashning eng yaxshi amaliyotlari

Temporary Directory bilan ishlash intizom talab qiladi: tmp-dagi ma'lumotlar qisqa muddatli bo‘lgani va ularning to‘planishi asossiz joy sarfiga olib kelishi mumkinligi sababli, dasturchi bir necha asosiy amaliyotlarga rioya qilishi kerak.

Fayllarni har doim foydalanishdan so‘ng o‘chiring

FileManager.removeItem(at:) vaqtinchalik fayl bilan operatsiya tugagandan so‘ng darhol chaqirilishi kerak. Swift-da xato yuz bersa ham o‘chirishni kafolatlash uchun defer dan foydalaning.

swift
import Foundation

let tempURL = FileManager.default
    .temporaryDirectory
    .appendingPathComponent("upload_temp.dat")

defer {
    try? FileManager.default.removeItem(at: tempURL)
}

// Vaqtinchalik fayl bilan ishlash
try "temporary data".write(to: tempURL, atomically: true)
// ... fayl operatsiyasi ...
// defer doiradan chiqishda bajariladi

Uzoq muddatli ma'lumotlar uchun tmp dan foydalanmang

Agar ma'lumotlar yaratilgandan bir soat keyin kerak bo‘lishi mumkin bo‘lsa — ularni Caches yoki Application Support da saqlang. tmp daqiqali operatsiyalar uchun mo‘ljallangan, saqlash uchun emas.

Ushbu qoidalarga rioya qilish vaqtinchalik fayllarning to‘planmasligini, disk joyidan samarali foydalanishni va ilova iOS fayl tizimining tozalash stsenariylarini to‘g‘ri boshqarishni kafolatlaydi.

Tez-tez so‘raladigan savollar

Ilova ishlayotganda Temporary Directory yo‘li o‘zgarishi mumkinmi?

Odatda yo‘l bir sessiya davomida o‘zgarmaydi, ammo iOS kafolat bermaydi. Kamdan-kam hollarda, tizim ilova fon rejimidan faol holatga o‘tganda tmp-ni o‘zgartirishi mumkin. Shuning uchun Apple har bir murojaatda NSTemporaryDirectory() orqali tmp yo‘lini olishni tavsiya qiladi, uni o‘zgaruvchida saqlash o‘rniga.

tmp-dan fayllarni o‘chirmasam nima bo‘ladi?

Fayllar to‘planadi va diskda joy egallaydi. iOS qurilma qayta ishga tushirilganda tmp-ni tozalashi mumkin, ammo shu paytgacha ilova disk joyini behuda sarflaydi. Sezilarli to‘planish bo‘lganda, foydalanuvchi xotira sozlamalarida ilova ko‘p joy egallaganini ko‘rishi mumkin.

tmp vaqtinchalik ma'lumotlarni shifrlash uchun mosmi?

Ha, maxsus ma'lumotlarni o‘z ichiga olgan vaqtinchalik fayllar uchun NSFileProtectionComplete bilan DataProtectionType dan foydalanishingiz mumkin. Ammo unutmang: agar fayl faqat joriy sessiya davomida o‘qilsa va keyin o‘chirilsa — shifrlash ortiqcha bo‘lishi mumkin. Shifrlash zaruriyatini ma'lumot turiga qarab baholang.

To‘qnashuvlarsiz tmp-da noyob fayl nomini qanday yaratish mumkin?

Noyob identifikator yaratish uchun ProcessInfo.processInfo.globallyUniqueString yoki UUID().uuidString dan foydalaning. FileManager shuningdek tmp-da avtomatik ravishda noyob nom yaratadigan urlForCreatingTemporaryFile metodini taqdim etadi. Bu parallel yozishda to‘qnashuvlar bo‘lmasligini kafolatlaydi.

tmp hajmi App Store ko‘rib chiqishiga ta'sir qiladimi?

Bilvosita — ha. Apple ilova diskda saqlaydigan ma'lumotlarning umumiy hajmiga e'tibor beradi. Agar tmp o‘chirilmagan fayllarning gigabaytlarini o‘z ichiga olsa, ko‘rib chiquvchi ilovani rad etishi mumkin. Tavsiya etilgan limit — istalgan vaqtda 100 MB dan oshmasligi kerak. Muntazam ravishda tmp-ni tozalang va hajmini FileManager orqali tekshiring.

Xulosa

  • Temporary Directory (tmp) — umri joriy ilova sessiyasi bilan chegaralangan ma'lumotlar uchun katalog.
  • tmp-ga yo‘l ishga tushirishlar orasida o‘zgarishi mumkin — uni doimiy xotirada saqlamang.
  • Tizim tmp-ni qurilma qayta ishga tushirilganda yoki ilova tushirilganda tozalashi mumkin.
  • tmp-dagi fayllar iCloud va iTunes zaxira nusxalariga kiritilmaydi.
  • Caches Directory-dan farqli o‘laroq, tmp sessiyalar orasida saqlash uchun mo‘ljallanmagan.
  • Dasturchi FileManager.removeItem yordamida vaqtinchalik fayllarni aniq o‘chirishi kerak.
  • Swift-da operatsiyaning istalgan natijasida vaqtinchalik fayllarni o‘chirishni kafolatlash uchun defer dan foydalaning.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing