Temporary Directory — bu nədir, müvəqqəti fayllar və yaddaş idarəsi

Müəllif: IT Sectr Dərc olunub: 2026-07-10 Oxuma vaxtı: 10 dəq

Temporary Directory (tmp) — bu iOS tətbiqinin sandboxunda çox qısamüddətli məlumatların saxlanması üçün nəzərdə tutulmuş kataloqdur, onlar yalnız cari tətbiq sessiyası ərzində lazımdır. Apple File System Programming Guide (2024) məlumatlarına görə, sistem hər tətbiq bağlandıqda və ya cihaz yenidən başladıldıqda tmp-ni təmizləyə bilər. Caches Directory-dən fərqli olaraq, tmp-dəki müvəqqəti fayllar başlatmalar arasında saxlama üçün nəzərdə tutulmayıb — proqramçı istifadədən sonra onları açıq şəkildə silməlidir ki, diskdə yer tutmasın.

Başlıca

  • Temporary Directory — yalnız cari tətbiq sessiyasında lazım olan məlumatlar üçün kataloq.
  • iOS sistemi cihaz yenidən başaldıqda və ya tətbiq bağlandıqda tmp-ni təmizləyə bilər.
  • tmp-dəki fayllar iCloud və iTunes ehtiyat nüsxalarına daxil edilmir.
  • tmp-yə yol Swift və ya Objective-C-də NSTemporaryDirectory() vasitəsilə əldə edilir.
  • Proqramçı istifadədən sonra tmp-dən faylları özü silməlidir.

iOS-da Temporary Directory nədir?

Temporary Directory (həmçinin tmp kimi tanınır) — bu iOS tətbiqinin sandboxu daxilindəki kataloqdur, ömrü cari sessiya ilə məhdudlaşan məlumatların saxlanması üçün nəzərdə tutulmuşdur. Bu, sandboxun bütün kataloqları arasında ən qısamüddətli yaddaşdır.

iOS tmp-ni aralıq fayl saxlanması tələb edən əməliyyatlar üçün təqdim edir: faylı Documents-a köçürməzdən əvvəl yükləmə, ixrac etməzdən əvvəl müvəqqəti surət yaratma, axın məlumatlarını buferləşdirmə. Əməliyyat başa çatdıqdan sonra müvəqqəti fayllar silinməlidir.

Apple Developer Documentation (2024) məlumatlarına görə, tmp kataloqu unikaldır çünki onun yolu tətbiqin başlatmaları arasında dəyişə bilər. iOS hər başlatmada tmp üçün yeni yol yaradır — bu, əvvəlki sessiyanın məlumatlarının təsadüfi oxunmamasını təmin edir. Proqramçı heç vaxt tmp yolunu başlatmalar arasında saxlamamalıdır.

Vacibdir: Caches Directory-dən fərqli olaraq, burada məlumatlar bir neçə başlatma davam edə bilər, tmp isə uzunmüddətli perspektivdə sessiyalar arasında məlumat saxlamağı zəmanət etmir. Bu, həqiqətən müvəqqəti məlumatları saxlamağın ən etibarlı üsuludur.

Temporary Directory-yə yolu necə əldə etməli

Swift-də tmp-yə yol əldə etmək üçün NSTemporaryDirectory() global funksiyasından və ya FileManager.temporaryDirectory-dən istifadə olunur. Bu, sandboxun bütün kataloqları arasında ən sadə API-dir.

swift
import Foundation

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

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

Objective-C eyni global funksiyadan NSTemporaryDirectory() istifadə edir. Nəticə — tətbiqin müvəqqəti kataloquna tam yol olan sətir.

objective-c
@import Foundation;

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

Digər kataloqlardan əsas fərq: NSTemporaryDirectory() domen və ya maska göstərməyi tələb etmir — bu global funksiyadır. Lakin yol növbəti başlatmada dəyişə bilər, ona görə onu heç vaxt UserDefaults və ya digər davamlı yaddaşda saxlamayın.

tmp-də hansı məlumatları saxlamaq olar

Temporary Directory ciddi müəyyən edilmiş ssenarilər üçün nəzərdə tutulmuşdur. Proqramçılar tez-tez tmp-ni Caches ilə qarışdırır, tmp-də bir sessiyadan daha uzun yaşamalı olan məlumatları yerləşdirirlər. Doğru istifadə hallarına baxaq.

İxrac zamanı aralıq fayllar

Fayllar məlumat ixracı prosesində yaradılır: poçtla göndərməzdən əvvəl hesabatın müvəqqəti surəti, yükləməzdən əvvəl sıxılmış arxiv, format konvertasiyasının aralıq faylı. İxrac tamamlandıqdan sonra fayl silinməlidir.

Axın məlumatlarının buferləşdirilməsi

Müvəqqəti buferlər real vaxt rejimində emal olunan audio, video və ya axın məlumatlarının yazılması üçün. Məsələn, daimi yaddaşda saxlamaqdan əvvəl səs yazısı və ya striminq zamanı video axınının buferləşdirilməsi.

Əsaslandırma
SsenariKataloq
İxrac PDF göndərməzdən əvvəltmpFayl göndərildikdən sonra lazım deyil
Keş şəkillərCachesSessiyalar arasında faydalı
Yükləmə faylı köçürməzdən əvvəltmpAralıq saxlama
Loglar sessiyatmpYalnız sessiya ərzində aktualdır
Redaktə sənədtmpSaxlamadan əvvəl versiya

Əgər məlumatlar yalnız burada və indi lazımdırsa — tmp istifadə edin. Əgər növbəti sessiyada lazım ola bilərsə — Caches istifadə edin. Əgər məlumat itkisi yolverilməzdirsə — Documents istifadə edin.

Müvəqqəti faylların həyat dövrü

iOS tmp-nin həyat dövrünü sandboxun digər kataloqlarından fərqli idarə edir. Bu dövrü başa düşmək tətbiqdə fayl saxlama sisteminin düzgün layihələndirilməsi üçün kritik əhəmiyyət daşıyır.

Hər başlatmada iOS tmp üçün yeni yol təyin edə bilər. Əvvəlki yol əlçatmaz olur, baxmayaraq ki, fiziki fayllar cihaz yenidən başalanana qədər diskdə qala bilər. Məhz bu səbəbdən Apple tmp yolunu sessiyalar arasında saxlamağı qəti şəkildə tövsiyə etmir.

Apple Tech Note TN2150 (2024) məlumatlarına görə, sistem aşağıdakı hallarda tmp-ni təmizləyə bilər: cihaz yenidən başaldıqda, diskdə yer limitinə çatıldıqda, tətbiq boşaldıldıqda (Offload). Caches-dən fərqli olaraq, tmp bir neçə başlatma ərzində belə məlumat saxlamaq üçün nəzərdə tutulmayıb — bu, sandboxda ən etibarsız yaddaşdır.

Proqramçı FileManager.removeItem(at:) vasitəsilə əməliyyat bitdikdən sonra müvəqqəti faylları açıq şəkildə silməlidir. Silinməmiş fayllar tmp-də toplanır və diskdə yer tutur — iOS onların yaxın zamanda avtomatik təmizlənməsini zəmanət etmir.

Temporary Directory vs Caches Directory

tmpCaches-in müqayisəsi proqramçılara saxlama kataloqu seçərkən düzgün qərar verməyə kömək edir. Seçimdə səhv ya məlumatların vaxtından əvvəl itirilməsinə, ya da əsassız yer israfına səbəb ola bilər.

ParametrTemporary DirectoryCaches Directory
ÖmürYalnız cari sessiyaSessiyalar arasında (zəmanətsiz)
Yol dəyişikliyiHər başlatmada dəyişə bilərSabit yol
Avtomatik təmizlikYenidən başlatma, boşaltma zamanıYer çatışmazlığında
Silinmə proqramçı tərəfindənMəcburi əməliyyatdan sonraLimit aşıldıqda tövsiyə olunur
İstifadəAralıq əməliyyatlarDavamlı keş

Praktik qayda: yaradıldıqdan sonra bir neçə saniyə və ya dəqiqə ərzində silinəcək məlumatlar üçün tmp seçin. Sessiyalar arasında bir neçə saat və ya gün saxlamağa dəyər, lakin bərpa oluna bilən məlumatlar üçün Caches seçin.

tmp ilə işin ən yaxşı təcrübələri

Temporary Directory ilə iş intizam tələb edir: tmp-dəki məlumatlar qısamüddətli olduğundan və onların yığılması əsassız yer israfına səbəb ola bildiyindən, proqramçı bir neçə əsas təcrübəyə riayət etməlidir.

Faylları həmişə istifadədən sonra silin

FileManager.removeItem(at:) müvəqqəti faylla əməliyyat bitdikdən dərhal sonra çağırılmalıdır. Swift-də xəta baş versə belə silinməni təmin etmək üçün defer istifadə edin.

swift
import Foundation

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

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

// Müvəqqəti faylla iş
try "temporary data".write(to: tempURL, atomically: true)
// ... fayl əməliyyatı ...
// defer əhatədən çıxıldıqda icra olunur

Uzunömürlü məlumatlar üçün tmp istifadə etməyin

Əgər məlumatlar yaradıldıqdan bir saat sonra lazım ola bilərsə — onları Caches və ya Application Support-da saxlayın. tmp dəqiqəlik əməliyyatlar üçün nəzərdə tutulub, saxlama üçün deyil.

Bu qaydalara riayət etmək müvəqqəti faylların yığılmamasını, disk yerindən səmərəli istifadəni və tətbiqin iOS fayl sisteminin təmizlik ssenarilərini düzgün idarə etməsini təmin edir.

Tez-tez verilən suallar

Tətbiq işləyərkən Temporary Directory-yə yol dəyişə bilərmi?

Adətən yol bir sessiya ərzində dəyişmir, lakin iOS zəmanət vermir. Nadir hallarda sistem tətbiq fon rejimindən aktiv vəziyyətə keçərkən tmp-ni dəyişə bilər. Buna görə Apple hər müraciətdə NSTemporaryDirectory() vasitəsilə tmp yolunu əldə etməyi tövsiyə edir, onu dəyişəndə saxlamaq əvəzinə.

tmp-dən faylları silməsəm nə olar?

Fayllar yığılacaq və diskdə yer tutacaq. iOS cihaz yenidən başaldıqda tmp-ni təmizləyə bilər, lakin o vaxta qədər tətbiq disk yerini boş yerə israf edəcək. Əhəmiyyətli yığılma olduqda istifadəçi yaddaş parametrlərində tətbiqin çox yer tutduğunu görə bilər.

tmp müvəqqəti məlumatların şifrlənməsi üçün uyğundurmu?

Bəli, həssas məlumatları olan müvəqqəti fayllar üçün NSFileProtectionComplete ilə DataProtectionType istifadə edə bilərsiniz. Ancaq unutmayın: əgər fayl yalnız cari sessiya çərçivəsində oxunacaq və sonra silinəcəksə — şifrləmə artıq ola bilər. Şifrləmə ehtiyacını məlumat növünə görə qiymətləndirin.

Toqquşmalar olmadan tmp-də unikal fayl adı necə yaradılmalı?

Unikal identifikator yaratmaq üçün ProcessInfo.processInfo.globallyUniqueString və ya UUID().uuidString istifadə edin. FileManager həmçinin tmp-də avtomatik olaraq unikal ad yaradan urlForCreatingTemporaryFile metodunu təqdim edir. Bu, paralel yazma zamanı toqquşmaların olmamasını təmin edir.

tmp ölçüsü App Store baxışına təsir edirmi?

Dolayı yolla — bəli. Apple tətbiqin diskdə saxladığı məlumatların ümumi ölçüsünə diqqət yetirir. Əgər tmp silinməmiş faylların giqabaytlarını ehtiva edirsə, baxışçı tətbiqi rədd edə bilər. Tövsiyə olunan limit — istənilən anda 100 MB-dan çox olmamalıdır. Müztərən tmp-ni təmizləyin və ölçüsünü FileManager vasitəsilə yoxlayın.

Nəticə

  • Temporary Directory (tmp) — ömrü cari tətbiq sessiyası ilə məhdudlaşan məlumatlar üçün kataloq.
  • tmp-yə yol başlatmalar arasında dəyişə bilər — onu davamlı yaddaşda saxlamayın.
  • Sistem tmp-ni cihaz yenidən başaldıqda və ya tətbiq boşaldıldıqda təmizləyə bilər.
  • tmp-dəki fayllar iCloud və iTunes ehtiyat nüsxalarına daxil edilmir.
  • Caches Directory-dən fərqli olaraq, tmp sessiyalar arasında saxlama üçün nəzərdə tutulmayıb.
  • Proqramçı FileManager.removeItem vasitəsilə müvəqqəti faylları açıq şəkildə silməlidir.
  • Swift-də əməliyyatın istənilən nəticəsində müvəqqəti faylların silinməsini təmin etmək üçün defer istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun