Temporary Directory — nedir, geçici dosyalar ve depolama yönetimi

Yazar: IT Sectr Yayınlanma: 2026-07-10 Okuma süresi: 10 dk

Temporary Directory (tmp), iOS uygulaması sandbox'unda, yalnızca geçerli uygulama oturumu sırasında ihtiyaç duyulan son derece kısa süreli verileri depolamak için bir dizindir. Apple File System Programming Guide (2024)'e göre sistem, her uygulama sonlandırmasında veya cihaz yeniden başlatmasında tmp'yi temizleyebilir. Caches Directory'nin aksine, tmp'deki geçici dosyaların başlatmalar arasında kalıcı olması amaçlanmamıştır — geliştirici, disk alanını boşa harcamamak için kullanımdan sonra bunları açıkça silmelidir.

Önemli Noktalar

  • Temporary Directory — yalnızca geçerli uygulama oturumunda ihtiyaç duyulan veriler için dizin.
  • iOS, cihaz yeniden başlatması veya uygulama sonlandırmasında tmp'yi temizleyebilir.
  • tmp'deki dosyalar iCloud ve iTunes yedeklemelerine dahil edilmez.
  • tmp yoluna Swift veya Objective-C'de NSTemporaryDirectory() ile erişilir.
  • Geliştirici, kullanımdan sonra tmp'deki dosyaları manuel olarak silmelidir.

iOS'ta Temporary Directory Nedir?

Temporary Directory (tmp olarak da bilinir), iOS uygulama sandbox'u içinde, yaşam süresi geçerli oturumla sınırlı verileri depolamak için tasarlanmış bir dizindir. Tüm sandbox dizinleri arasında en kısa ömürlü depolamadır.

iOS, ara dosya depolama gerektiren işlemler için tmp sağlar: Documents'a taşımadan önce bir dosyayı indirme, dışa aktarmadan önce geçici kopya oluşturma, akış verilerini arabelleğe alma. İşlem tamamlandıktan sonra geçici dosyalar silinmelidir.

Apple Developer Documentation (2024)'e göre, tmp dizini benzersizdir çünkü yolu uygulama başlatmaları arasında değişebilir. iOS her başlatmada tmp için yeni bir yol oluşturur — bu, önceki oturumdaki verilerin yanlışlıkla okunmamasını sağlar. Geliştirici, başlatmalar arasında tmp yolunu asla kaydetmemelidir.

Önemli: Caches Directory'nin aksine, verilerin birden çok başlatmada hayatta kalabildiği yerde, tmp uzun vadede oturumlar arasında veri kalıcılığını garanti etmez. Gerçekten geçici verileri depolamanın en güvenilir yoludur.

Temporary Directory Yolunu Alma

Swift'te tmp yolunu almak için genel işlev NSTemporaryDirectory() veya FileManager.temporaryDirectory kullanılır. Bunlar tüm sandbox dizinleri arasındaki en basit API'lerdir.

swift
import Foundation

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

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

Objective-C aynı genel işlevi NSTemporaryDirectory() kullanır. Sonuç, uygulamanın geçici dizinine giden tam yolu içeren bir dizedir.

objective-c
@import Foundation;

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

Diğer dizinlerden önemli bir fark: NSTemporaryDirectory() bir etki alanı veya arama maskesi belirtmeyi gerektirmez — bu genel bir işlevdir. Ancak, sonraki başlatmada yol değişebilir, bu nedenle asla UserDefaults'ta veya başka kalıcı depolamada kaydetmeyin.

tmp'de Hangi Veriler Saklanmalı

Temporary Directory kesin olarak tanımlanmış bir dizi senaryo için tasarlanmıştır. Geliştiriciler genellikle tmp'yi Caches ile karıştırır ve bir oturumdan daha uzun sürmesi gereken verileri tmp'ye koyar. Doğru kullanım durumlarına bakalım.

Dışa aktarım sırasında ara dosyalar

Veri dışa aktarımı sırasında oluşturulan dosyalar: e-postayla göndermeden önce bir raporun geçici kopyası, yüklemeden önce sıkıştırılmış arşiv, biçim dönüştürme için ara dosya. Dışa aktarım tamamlandıktan sonra dosya silinmelidir.

Akış verilerini arabelleğe alma

Gerçek zamanlı işlenen ses, video veya akış verilerini kaydetmek için geçici arabellekler. Örneğin, kalıcı depolamaya kaydetmeden önce ses kaydı veya akış sırasında video akışını arabelleğe alma.

SenaryoDizinGerekçe
Göndermeden önce PDF dışa aktartmpGönderdikten sonra dosya gerekmez
Görüntüleri cache yapCachesOturumlar arasında kullanışlı
Taşımadan önce dosya indirtmpAra depolama
Oturum günlükleritmpYalnızca oturumda geçerli
Belge düzenletmpKaydetmeden önce sürüm

Veriler yalnızca şu anda burada gerekiyorsa — tmp kullanın. Sonraki oturumda faydalı olabilirse — Caches kullanın. Veri kaybı kabul edilemezse — Documents kullanın.

Geçici Dosyaların Yaşam Döngüsü

iOS, tmp'nin yaşam döngüsünü diğer sandbox dizinlerinden farklı yönetir. Bu döngüyü anlamak, uygulamada doğru dosya depolama tasarımı için kritiktir.

Her başlatmada, iOS tmp için yeni bir yol tahsis edebilir. Önceki yol erişilemez hale gelir, ancak fiziksel dosyalar cihaz yeniden başlatılana kadar diskte kalabilir. Bu nedenle Apple, oturumlar arasında tmp yolunu kaydetmemeyi şiddetle önerir.

Apple Tech Note TN2150 (2024)'ye göre sistem, aşağıdaki durumlarda tmp'yi temizleyebilir: cihaz yeniden başlatma, disk alanı sınırına ulaşma, uygulama boşaltma (Offload). Caches'in aksine tmp, birden çok başlatma arasında bile veri depolamak için tasarlanmamıştır — sandbox'taki en güvenilmez depolamadır.

Geliştirici, FileManager.removeItem(at:) kullanarak bir işlemi tamamladıktan sonra geçici dosyaları açıkça silmelidir. tmp'de silinmeyen dosyalar birikir ve disk alanını boşa harcar — iOS yakın gelecekte bunların otomatik temizliğini garanti etmez.

Temporary Directory vs Caches Directory

tmp ve Caches karşılaştırması, geliştiricilerin depolama için bir dizin seçerken doğru kararı vermelerine yardımcı olur. Yanlış seçim, erken veri kaybına veya gereksiz alan tüketimine yol açabilir.

ParametreTemporary DirectoryCaches Directory
Yaşam süresiYalnızca geçerli oturumOturumlar arası (garantisiz)
Yol değişimiHer başlatmada değişebilirKararlı yol
Otomatik temizlemeYeniden başlatmada, boşaltmadaAlan yetersiz olduğunda
Geliştirici silmesiİşlemden sonra zorunluSınır aşıldığında önerilir
KullanımAra işlemlerKalıcı cache

Pratik bir kural: oluşturulduktan saniyeler veya dakikalar içinde silinecek veriler için tmp seçin. Oturumlar arasında saatler veya günler boyunca saklamanın faydalı olduğu ancak yeniden oluşturulabilen veriler için Caches seçin.

tmp ile Çalışma En İyi Uygulamaları

Temporary Directory ile çalışmak disiplin gerektirir: tmp'deki veriler kısa ömürlü olduğundan ve birikmeleri alan israfına yol açabileceğinden, geliştiricilerin birkaç önemli uygulamayı takip etmesi gerekir.

Kullanımdan sonra dosyaları her zaman silin

FileManager.removeItem(at:), geçici bir dosyayla işlem tamamlandıktan hemen sonra çağrılmalıdır. Hata oluşsa bile silmeyi garanti etmek için Swift'te defer kullanın.

swift
import Foundation

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

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

// Work with temp file
try "temporary data".write(to: tempURL, atomically: true)
// ... file operation ...
// defer executes when scope exits

Uzun ömürlü veriler için tmp kullanmayın

Veriler oluşturulduktan bir saat sonra gerekebilirse — bunları Caches veya Application Support'e kaydedin. tmp, dakikalık işlemler için tasarlanmıştır, depolama için değil.

Bu kurallara uymak, geçici dosyaların birikmemesini, disk alanının verimli kullanılmasını ve uygulamanın iOS dosya sistemi temizleme senaryolarını doğru şekilde işlemesini sağlar.

Sıkça Sorulan Sorular

Uygulama çalışırken Temporary Directory yolu değişebilir mi?

Genellikle yol tek bir oturum içinde değişmez, ancak iOS bunu garanti etmez. Nadir durumlarda, sistem uygulama arka plandan ön plana geçtiğinde tmp'yi değiştirebilir. Bu nedenle Apple, yolu bir değişkende saklamak yerine her ihtiyacınızda NSTemporaryDirectory()'yi çağırmanızı önerir.

tmp'den dosyaları silmezsem ne olur?

Dosyalar birikir ve disk alanı kaplar. iOS cihaz yeniden başlatmasında tmp'yi temizleyebilir, ancak o zamana kadar uygulama disk alanını boşa harcar. Önemli birikimde, kullanıcı depolama ayarlarında uygulamanın çok yer kapladığını görebilir.

tmp geçici verileri şifrelemek için uygun mu?

Evet, hassas veriler içeren geçici dosyalar için NSFileProtectionComplete ile DataProtectionType kullanabilirsiniz. Ancak unutmayın: dosya yalnızca geçerli oturumda okunacak ve ardından silinecekse, şifreleme gereksiz olabilir. Veri türüne göre şifreleme ihtiyacını değerlendirin.

tmp'de çakışma olmadan benzersiz dosya adı nasıl oluşturulur?

Benzersiz bir tanımlayıcı oluşturmak için ProcessInfo.processInfo.globallyUniqueString veya UUID().uuidString kullanın. FileManager ayrıca tmp'de otomatik olarak benzersiz bir ad oluşturan urlForCreatingTemporaryFile yöntemini sağlar. Bu, paralel yazmalar sırasında çakışma olmamasını garanti eder.

tmp'nin boyutu App Store incelemesini etkiler mi?

Dolaylı olarak — evet. Apple, uygulamanın diskte depoladığı toplam veri miktarına dikkat eder. tmp silinmemiş gigabaytlarca dosya içeriyorsa, incelemeyi yapan kişi uygulamayı reddedebilir. tmp için önerilen sınır, herhangi bir zamanda 100 MB'ı geçmemektir. tmp'yi düzenli olarak temizleyin ve FileManager aracılığıyla boyutunu kontrol edin.

Özet

  • Temporary Directory (tmp) — yaşam süresi geçerli uygulama oturumuyla sınırlı veriler için dizin.
  • tmp yolu başlatmalar arasında değişebilir — kalıcı depolamada kaydetmeyin.
  • Sistem, cihaz yeniden başlatmasında veya uygulama boşaltmasında tmp'yi temizleyebilir.
  • tmp'deki dosyalar iCloud ve iTunes yedeklemelerine dahil edilmez.
  • Caches Directory'nin aksine tmp oturumlar arası depolama için tasarlanmamıştır.
  • Geliştirici, FileManager.removeItem kullanarak geçici dosyaları açıkça silmelidir.
  • Swift'te defer kullanarak işlem sonucundan bağımsız olarak geçici dosyaların silinmesini garanti edin.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun