Temporary Directory — vad är det, temporära filer och lagringshantering

Författare: IT Sectr Publicerad: 2026-07-10 Lästid: 10 min

Temporary Directory (tmp) — är en katalog i iOS-appens sandlåda för lagring av mycket kortvariga data som bara behövs inom den aktuella app-sessionen. Enligt Apple File System Programming Guide (2024) kan systemet rensa tmp vid varje avslutning av appen eller vid omstart av enheten. Till skillnad från Caches Directory är temporära filer i tmp inte avsedda för lagring mellan starter — utvecklaren måste explicit ta bort dem efter användning för att inte uppta diskutrymme.

Huvudpunkter

  • Temporary Directory — katalog för data som bara behövs i den aktuella app-sessionen.
  • iOS-systemet kan rensa tmp vid omstart av enheten eller avslutning av appen.
  • Filer från tmp inkluderas inte i iCloud- och iTunes-säkerhetskopior.
  • Sökvägen till tmp erhålls via NSTemporaryDirectory() i Swift eller Objective-C.
  • Utvecklaren måste själv ta bort filer från tmp efter användning.

Vad är Temporary Directory i iOS?

Temporary Directory (även känt som tmp) — är en katalog inuti iOS-appens sandlåda, avsedd för lagring av data vars livslängd är begränsad till den aktuella sessionen. Detta är den kortaste lagringen bland alla sandlådans kataloger.

iOS tillhandahåller tmp för operationer som kräver mellanliggande fillagring: nedladdning av en fil innan den flyttas till Documents, skapa en temporär kopia före export, buffring av strömmande data. Efter slutförandet av operationen måste temporära filer tas bort.

Enligt Apple Developer Documentation (2024) är tmp-katalogen unik eftersom dess sökväg kan ändras mellan appstarter. iOS genererar en ny sökväg till tmp vid varje start — detta garanterar att data från föregående session inte läses av misstag. Utvecklaren bör aldrig spara sökvägen till tmp mellan starter.

Viktigt: till skillnad från Caches Directory, där data kan överleva flera starter, garanterar inte tmp lagring av data mellan sessioner på lång sikt. Detta är det mest pålitliga sättet att lagra verkligt temporära data.

Hur får man sökvägen till Temporary Directory

I Swift för att få sökvägen till tmp används den globala funktionen NSTemporaryDirectory() eller FileManager.temporaryDirectory. Detta är det enklaste API:t bland alla sandlådans kataloger.

swift
import Foundation

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

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

Objective-C använder samma globala funktion NSTemporaryDirectory(). Resultatet är en sträng med den fullständiga sökvägen till appens temporära katalog.

objective-c
@import Foundation;

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

Den viktigaste skillnaden från andra kataloger: NSTemporaryDirectory() kräver inte angivelse av domän eller mask — det är en global funktion. Sökvägen kan dock ändras vid nästa start, så spara den aldrig i UserDefaults eller annan beständig lagring.

Vilka data ska lagras i tmp

Temporary Directory är avsedd för en strikt definierad uppsättning scenarier. Utvecklare blandar ofta ihop tmp med Caches och placerar i tmp data som borde leva längre än en session. Låt oss titta på de korrekta användningsfallen.

Mellanliggande filer vid export

Filer som skapas under export av data: en temporär kopia av en rapport innan den skickas via e-post, ett komprimerat arkiv före nedladdning, en mellanliggande fil för formatkonvertering. Efter slutförd export måste filen tas bort.

Buffring av strömmande data

Temporära buffertar för inspelning av ljud, video eller strömmande data som bearbetas i realtid. Till exempel röstinspelning innan den sparas i permanent lagring eller buffring av videoström vid streaming.

ScenarioKatalogMotivering
Export PDF före sändningtmpFilen behövs inte efter sändning
Cache av bilderCachesAnvändbart mellan sessioner
Nedladdning av fil före flytttmpMellanliggande lagring
Loggar för sessiontmpAktuella endast i sessionen
Redigering av dokumenttmpVersion före sparande

Om data behövs bara här och nu — använd tmp. Om de kan vara användbara i nästa session — använd Caches. Om dataförlust är oacceptabel — använd Documents.

Livscykel för temporära filer

iOS hanterar livscykeln för tmp annorlunda än andra sandlådekataloger. Att förstå denna cykel är avgörande för korrekt design av fillagring i appen.

Vid varje start av appen kan iOS tilldela en ny sökväg för tmp. Den föregående sökvägen blir otillgänglig, även om fysiska filer kan finnas kvar på diskten tills enheten startas om. Det är av denna anledning Apple starkt rekommenderar att inte spara sökvägen till tmp mellan sessioner.

Enligt Apple Tech Note TN2150 (2024) kan systemet rensa tmp i följande fall: vid omstart av enheten, när diskutrymmesgränsen nås, vid avlastning av appen (Offload). Till skillnad från Caches är tmp inte avsedd för lagring av data ens över flera starter — detta är den minst pålitliga lagringen i sandlådan.

Utvecklaren är skyldig att explicit ta bort temporära filer efter slutförd operation med FileManager.removeItem(at:). Ej borttagna filer i tmp ackumuleras och upptar diskutrymme — iOS garanterar inte deras automatiska rensning inom en snar framtid.

Temporary Directory vs Caches Directory

Jämförelse av tmp och Caches hjälper utvecklare att fatta rätt beslut vid val av katalog för lagring. Ett fel i valet kan leda till antingen för tidig dataförlust eller onödigt slöseri med utrymme.

ParameterTemporary DirectoryCaches Directory
LivslängdEndast aktuell sessionMellan sessioner (utan garanti)
SökvägsändringKan ändras varje startStabil sökväg
Automatisk rensningVid omstart, vid avlastningVid utrymmesbrist
Borttagning av utvecklareObligatoriskt efter operationRekommenderas vid överskriden gräns
AnvändningMellanliggande operationerBeständig cache

Praktisk regel: välj tmp för data som kommer att tas bort inom några sekunder eller minuter efter skapande. Välj Caches för data som är värda att behålla i några timmar eller dagar mellan sessioner, men som kan återskapas.

Bästa praxis för arbete med tmp

Arbete med Temporary Directory kräver disciplin: eftersom data i tmp är kortlivade och deras ackumulering kan leda till onödigt slöseri med utrymme, måste utvecklaren följa flera viktiga praxis.

Ta alltid bort filer efter användning

FileManager.removeItem(at:) bör anropas omedelbart efter slutförandet av operationen med den temporära filen. Använd defer i Swift för garanterad borttagning även vid fel.

swift
import Foundation

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

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

// Arbeta med temporär fil
try "temporary data".write(to: tempURL, atomically: true)
// ... filoperation ...
// defer körs när scopet lämnas

Använd inte tmp för långlivade data

Om data kan behövas en timme efter skapande — spara dem i Caches eller Application Support. tmp är avsedd för minutoperationer, inte för lagring.

Att följa dessa regler garanterar att temporära filer inte ackumuleras, diskutrymme används effektivt och appen korrekt hanterar alla rensningsscenarier för iOS-filsystemet.

Vanliga frågor

Kan sökvägen till Temporary Directory ändras medan appen körs?

Vanligtvis ändras inte sökvägen inom en session, men iOS ger inga garantier. I sällsynta fall kan systemet ändra tmp när appen går från bakgrunden till aktivt tillstånd. Därför rekommenderar Apple att hämta sökvägen till tmp via NSTemporaryDirectory() vid varje anrop, istället för att spara den i en variabel.

Vad händer om jag inte tar bort filer från tmp?

Filer kommer att ackumuleras och uppta diskutrymme. iOS kan rensa tmp vid omstart av enheten, men fram till dess kommer appen att slösa diskutrymme. Vid betydande ackumulering kan användaren se i lagringsinställningarna att appen tar mycket plats.

Är tmp lämplig för kryptering av temporära data?

Ja, du kan använda DataProtectionType med NSFileProtectionComplete för temporära filer som innehåller känsliga data. Kom dock ihåg: om filen endast läses inom den aktuella sessionen och sedan tas bort — kan kryptering vara överflödig. Bedöm behovet av kryptering baserat på datatypen.

Hur skapar man ett unikt filnamn i tmp utan kollisioner?

Använd ProcessInfo.processInfo.globallyUniqueString för att generera en unik identifierare eller UUID().uuidString. FileManager tillhandahåller också metoden urlForCreatingTemporaryFile som automatiskt genererar ett unikt namn i tmp. Detta garanterar frånvaro av kollisioner vid parallell skrivning.

Påverkar tmp-storleken granskningen i App Store?

Indirekt — ja. Apple uppmärksammar den totala mängden data som appen lagrar på disken. Om tmp innehåller gigabyte med ej borttagna filer kan granskaren avvisa appen. Den rekommenderade gränsen för tmp är högst 100 MB vid varje given tidpunkt. Rensa tmp regelbundet och kontrollera dess storlek via FileManager.

Sammanfattning

  • Temporary Directory (tmp) — katalog för data vars livslängd är begränsad till den aktuella app-sessionen.
  • Sökvägen till tmp kan ändras mellan starter — spara den inte i beständig lagring.
  • Systemet kan rensa tmp vid omstart av enheten eller avlastning av appen.
  • Filer från tmp inkluderas inte i iCloud- och iTunes-säkerhetskopior.
  • Till skillnad från Caches Directory är tmp inte avsedd för lagring mellan sessioner.
  • Utvecklaren måste explicit ta bort temporära filer med FileManager.removeItem.
  • Använd defer i Swift för garanterad borttagning av temporära filer vid varje operationsresultat.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också