Temporary Directory — wat is het, tijdelijke bestanden en opslagbeheer

Auteur: IT Sectr Gepubliceerd: 2026-07-10 Leestijd: 10 min

Temporary Directory (tmp) — is een map in de sandbox van een iOS-app voor de opslag van zeer kortstondige gegevens die alleen in de huidige sessie van de app nodig zijn. Volgens Apple File System Programming Guide (2024) kan het systeem tmp wissen bij elke beëindiging van de app of bij het opnieuw opstarten van het apparaat. In tegenstelling tot Caches Directory zijn tijdelijke bestanden in tmp niet bedoeld voor opslag tussen starts — de ontwikkelaar moet ze expliciet verwijderen na gebruik om schijfruimte te besparen.

Belangrijkste

  • Temporary Directory — map voor gegevens die alleen in de huidige app-sessie nodig zijn.
  • Het iOS-systeem kan tmp wissen bij het opnieuw opstarten van het apparaat of beëindigen van de app.
  • Bestanden uit tmp worden niet opgenomen in iCloud- en iTunes-back-ups.
  • Het pad naar tmp wordt verkregen via NSTemporaryDirectory() in Swift of Objective-C.
  • De ontwikkelaar moet bestanden uit tmp zelf verwijderen na gebruik.

Wat is Temporary Directory in iOS?

Temporary Directory (ook bekend als tmp) — is een map in de sandbox van de iOS-app, bedoeld voor de opslag van gegevens waarvan de levensduur beperkt is tot de huidige sessie. Dit is de kortstondigste opslag van alle sandbox-mappen.

iOS biedt tmp voor bewerkingen die tussenliggende bestandsopslag vereisen: het downloaden van een bestand voordat het naar Documents wordt verplaatst, het maken van een tijdelijke kopie voor export, het bufferen van streaminggegevens. Na voltooiing van de bewerking moeten tijdelijke bestanden worden verwijderd.

Volgens Apple Developer Documentation (2024) is de tmp-map uniek omdat het pad kan veranderen tussen starts van de app. iOS genereert bij elke start een nieuw pad naar tmp — dit garandeert dat gegevens uit de vorige sessie niet per ongeluk worden gelezen. De ontwikkelaar mag het pad naar tmp nooit opslaan tussen starts.

Belangrijk: in tegenstelling tot Caches Directory, waar gegevens meerdere starts kunnen overleven, garandeert tmp geen opslag van gegevens tussen sessies op de lange termijn. Dit is de meest betrouwbare manier om echt tijdelijke gegevens op te slaan.

Hoe krijg je het pad naar Temporary Directory

In Swift wordt voor het verkrijgen van het pad naar tmp de globale functie NSTemporaryDirectory() of FileManager.temporaryDirectory gebruikt. Dit is de eenvoudigste API van alle sandbox-mappen.

swift
import Foundation

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

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

Objective-C gebruikt dezelfde globale functie NSTemporaryDirectory(). Het resultaat is een string met het volledige pad naar de tijdelijke map van de app.

objective-c
@import Foundation;

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

Het belangrijkste verschil met andere mappen: NSTemporaryDirectory() vereist geen opgave van domein of masker — het is een globale functie. Het pad kan echter veranderen bij de volgende start, dus sla het nooit op in UserDefaults of andere persistente opslag.

Welke gegevens opslaan in tmp

Temporary Directory is bedoeld voor een strikt gedefinieerde set scenario’s. Ontwikkelaars verwarren tmp vaak met Caches en plaatsen in tmp gegevens die langer dan één sessie moeten blijven. Laten we de juiste gebruiksscenario’s bekijken.

Tussenliggende bestanden bij export

Bestanden die worden aangemaakt tijdens het exporteren van gegevens: een tijdelijke kopie van een rapport voordat het wordt gemaild, een gecomprimeerd archief voor download, een tussenliggend bestand voor formaatconversie. Na voltooiing van de export moet het bestand worden verwijderd.

Bufferen van streaminggegevens

Tijdelijke buffers voor het opnemen van audio, video of streaminggegevens die in realtime worden verwerkt. Bijvoorbeeld het opnemen van spraak voordat het in permanente opslag wordt opgeslagen of het bufferen van een videostream tijdens het streamen.

ScenarioMapMotivatie
Export PDF voor verzendingtmpBestand niet nodig na verzending
Cache van afbeeldingenCachesNuttig tussen sessies
Download bestand voor verplaatsingtmpTussenliggende opslag
Logs van sessietmpAlleen actueel in sessie
Bewerken documenttmpVersie voor opslag

Als gegevens alleen hier en nu nodig zijn — gebruik tmp. Als ze in de volgende sessie van pas kunnen komen — gebruik Caches. Als gegevensverlies onaanvaardbaar is — gebruik Documents.

Levenscyclus van tijdelijke bestanden

iOS beheert de levenscyclus van tmp anders dan andere sandbox-mappen. Inzicht in deze cyclus is van cruciaal belang voor het correct ontwerpen van bestandsopslag in de app.

Bij elke start van de app kan iOS een nieuw pad voor tmp toewijzen. Het vorige pad wordt ontoegankelijk, hoewel fysieke bestanden op de schijf kunnen blijven tot het apparaat opnieuw wordt opgestart. Om deze reden raadt Apple ten zeerste aan om het pad naar tmp niet tussen sessies op te slaan.

Volgens Apple Tech Note TN2150 (2024) kan het systeem tmp in de volgende gevallen wissen: bij het opnieuw opstarten van het apparaat, bij het bereiken van de schijfruimtelimiet, bij het offloaden van de app. In tegenstelling tot Caches is tmp niet bedoeld voor het bewaren van gegevens, zelfs niet voor meerdere starts — dit is de minst betrouwbare opslag in de sandbox.

De ontwikkelaar is verplicht om tijdelijke bestanden expliciet te verwijderen na voltooiing van de bewerking met FileManager.removeItem(at:). Niet-verwijderde bestanden in tmp hopen zich op en nemen schijfruimte in beslag — iOS garandeert niet dat ze binnenkort automatisch worden gewist.

Temporary Directory vs Caches Directory

Vergelijking van tmp en Caches helpt ontwikkelaars de juiste beslissing te nemen bij het kiezen van een map voor opslag. Een fout in de keuze kan leiden tot voortijdig gegevensverlies of onnodig ruimtegebruik.

ParameterTemporary DirectoryCaches Directory
LevensduurAlleen huidige sessieTussen sessies (zonder garantie)
PadwijzigingKan elke start veranderenStabiel pad
Automatisch wissenBij herstart, bij offloadBij ruimtegebrek
Verwijderen door ontwikkelaarVerplicht na bewerkingAanbevolen bij overschrijding limiet
GebruikTussenliggende bewerkingenPersistente cache

Praktische regel: kies tmp voor gegevens die binnen enkele seconden of minuten na aanmaak worden verwijderd. Kies Caches voor gegevens die het waard zijn om enkele uren of dagen tussen sessies te bewaren, maar die opnieuw kunnen worden aangemaakt.

Beste praktijken voor werken met tmp

Werken met Temporary Directory vereist discipline: omdat gegevens in tmp kortstondig zijn en ophoping kan leiden tot onnodig ruimtegebruik, moet de ontwikkelaar een aantal belangrijke praktijken volgen.

Verwijder bestanden altijd na gebruik

FileManager.removeItem(at:) moet onmiddellijk worden aangeroepen na voltooiing van de bewerking met het tijdelijke bestand. Gebruik defer in Swift om verwijdering te garanderen, zelfs bij een fout.

swift
import Foundation

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

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

// Werken met tijdelijk bestand
try "temporary data".write(to: tempURL, atomically: true)
// ... bestandsbewerking ...
// defer wordt uitgevoerd bij verlaten van scope

Gebruik tmp niet voor langlevende gegevens

Als gegevens een uur na aanmaak nodig kunnen zijn — sla ze dan op in Caches of Application Support. tmp is bedoeld voor minuutbewerkingen, niet voor opslag.

Het naleven van deze regels garandeert dat tijdelijke bestanden zich niet ophopen, schijfruimte efficiënt wordt gebruikt en de app correct omgaat met elk opschoningsscenario van het iOS-bestandssysteem.

Veelgestelde vragen

Kan het pad naar Temporary Directory veranderen tijdens het gebruik van de app?

Meestal verandert het pad niet binnen één sessie, maar iOS geeft geen garanties. In zeldzame gevallen kan het systeem tmp wijzigen wanneer de app van de achtergrond naar de actieve status gaat. Daarom raadt Apple aan om het pad naar tmp via NSTemporaryDirectory() bij elke aanroep op te vragen, in plaats van het in een variabele op te slaan.

Wat gebeurt er als ik bestanden niet uit tmp verwijder?

Bestanden hopen zich op en nemen schijfruimte in beslag. iOS kan tmp wissen bij het opnieuw opstarten van het apparaat, maar tot die tijd verspilt de app schijfruimte. Bij aanzienlijke ophoping kan de gebruiker in de opslaginstellingen zien dat de app veel ruimte in beslag neemt.

Is tmp geschikt voor het versleutelen van tijdelijke gegevens?

Ja, je kunt DataProtectionType met NSFileProtectionComplete gebruiken voor tijdelijke bestanden met gevoelige gegevens. Onthoud echter: als het bestand alleen binnen de huidige sessie wordt gelezen en vervolgens wordt verwijderd — kan versleuteling overbodig zijn. Beoordeel de noodzaak van versleuteling op basis van het type gegevens.

Hoe maak ik een unieke bestandsnaam in tmp zonder conflicten?

Gebruik ProcessInfo.processInfo.globallyUniqueString voor het genereren van een unieke identificatie of UUID().uuidString. FileManager biedt ook de methode urlForCreatingTemporaryFile die automatisch een unieke naam in tmp genereert. Dit garandeert geen conflicten bij parallel schrijven.

Heeft de grootte van tmp invloed op de beoordeling in de App Store?

Indirect — ja. Apple let op de totale hoeveelheid gegevens die de app op de schijf opslaat. Als tmp gigabytes aan niet-verwijderde bestanden bevat, kan de reviewer de app afwijzen. De aanbevolen limiet voor tmp — niet meer dan 100 MB op elk moment. Maak tmp regelmatig schoon en controleer de grootte via FileManager.

Samenvatting

  • Temporary Directory (tmp) — map voor gegevens waarvan de levensduur beperkt is tot de huidige app-sessie.
  • Het pad naar tmp kan veranderen tussen starts — sla het niet op in persistente opslag.
  • Het systeem kan tmp wissen bij herstart van het apparaat of offloaden van de app.
  • Bestanden uit tmp worden niet opgenomen in iCloud- en iTunes-back-ups.
  • In tegenstelling tot Caches Directory is tmp niet bedoeld voor opslag tussen sessies.
  • De ontwikkelaar moet tijdelijke bestanden expliciet verwijderen met FileManager.removeItem.
  • Gebruik defer in Swift voor gegarandeerde verwijdering van tijdelijke bestanden bij elke uitkomst van de bewerking.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook