Temporary Directory — qué es, archivos temporales y gestión del almacenamiento

Autor: IT Sectr Publicado: 2026-07-10 Tiempo de lectura: 10 min

Temporary Directory (tmp) es un directorio dentro del sandbox de una aplicación iOS para almacenar datos extremadamente temporales que solo se necesitan durante la sesión actual de la aplicación. Según la Apple File System Programming Guide (2024), el sistema puede limpiar tmp al finalizar cada aplicación o al reiniciar el dispositivo. A diferencia de Caches Directory, los archivos temporales en tmp no están diseñados para persistir entre ejecuciones — el desarrollador debe eliminarlos explícitamente después de usarlos para no desperdiciar espacio en disco.

Puntos clave

  • Temporary Directory — directorio para datos que solo se necesitan en la sesión actual de la aplicación.
  • iOS puede limpiar tmp al reiniciar el dispositivo o cerrar la aplicación.
  • Los archivos de tmp no se incluyen en las copias de seguridad de iCloud e iTunes.
  • La ruta a tmp se obtiene mediante NSTemporaryDirectory() en Swift u Objective-C.
  • El desarrollador debe eliminar manualmente los archivos de tmp después de usarlos.

¿Qué es Temporary Directory en iOS?

Temporary Directory (también conocido como tmp) es un directorio dentro del sandbox de una aplicación iOS diseñado para almacenar datos cuya vida útil se limita a la sesión actual. Es el almacenamiento más efímero entre todos los directorios del sandbox.

iOS proporciona tmp para operaciones que requieren almacenamiento intermedio de archivos: descargar un archivo antes de moverlo a Documents, crear una copia temporal antes de exportar, almacenar en búfer datos de streaming. Una vez completada la operación, los archivos temporales deben eliminarse.

Según la documentación de Apple Developer (2024), el directorio tmp es único porque su ruta puede cambiar entre ejecuciones de la aplicación. iOS genera una nueva ruta tmp en cada inicio — esto garantiza que los datos de la sesión anterior no se lean accidentalmente. El desarrollador nunca debe guardar la ruta tmp entre ejecuciones.

Es importante: a diferencia de Caches Directory, donde los datos pueden sobrevivir a varios inicios, tmp garantiza que los datos no persistan entre sesiones a largo plazo. Es la forma más fiable de almacenar datos verdaderamente temporales.

Cómo obtener la ruta al Temporary Directory

En Swift, para obtener la ruta a tmp se usa la función global NSTemporaryDirectory() o FileManager.temporaryDirectory. Estas son las API más simples entre todos los directorios del sandbox.

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 usa la misma función global NSTemporaryDirectory(). El resultado es una cadena con la ruta completa al directorio temporal de la aplicación.

objective-c
@import Foundation;

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

Una diferencia clave con otros directorios: NSTemporaryDirectory() no requiere especificar un dominio o máscara de búsqueda — es una función global. Sin embargo, la ruta puede cambiar en el siguiente inicio, por lo que nunca debes guardarla en UserDefaults u otro almacenamiento persistente.

Qué datos almacenar en tmp

Temporary Directory está diseñada para un conjunto estrictamente definido de escenarios. Los desarrolladores a menudo confunden tmp con Caches, colocando en tmp datos que deberían durar más de una sesión. Veamos los casos de uso correctos.

Archivos intermedios durante la exportación

Archivos creados durante la exportación de datos: una copia temporal de un informe antes de enviarlo por correo, un archivo comprimido antes de subirlo, un archivo intermedio de conversión de formato. Una vez completada la exportación, el archivo debe eliminarse.

Almacenamiento en búfer de datos de streaming

Búferes temporales para grabar audio, video o datos de streaming que se procesan en tiempo real. Por ejemplo, grabación de voz antes de guardarla en almacenamiento permanente o almacenamiento en búfer de video durante la transmisión.

EscenarioDirectorioJustificación
Exportar PDF antes de enviartmpArchivo no necesario tras envío
Cachear imágenesCachesÚtil entre sesiones
Descargar archivo antes de movertmpAlmacenamiento intermedio
Logs de sesióntmpRelevantes solo en la sesión
Editar documentotmpVersión antes de guardar

Si los datos solo se necesitan aquí y ahora — usa tmp. Si pueden ser útiles en la próxima sesión — usa Caches. Si la pérdida de datos es inaceptable — usa Documents.

Ciclo de vida de los archivos temporales

iOS gestiona el ciclo de vida de tmp de manera diferente a otros directorios del sandbox. Comprender este ciclo es fundamental para diseñar correctamente el almacenamiento de archivos en la aplicación.

En cada inicio de la aplicación, iOS puede asignar una nueva ruta para tmp. La ruta anterior deja de ser accesible, aunque los archivos físicos pueden permanecer en el disco hasta que se reinicie el dispositivo. Por esta razón, Apple recomienda encarecidamente no guardar la ruta tmp entre sesiones.

Según Apple Tech Note TN2150 (2024), el sistema puede limpiar tmp en los siguientes casos: reinicio del dispositivo, límite de espacio en disco alcanzado, descarga de la aplicación (Offload). A diferencia de Caches, tmp no está diseñada para almacenar datos ni siquiera entre varios inicios — es el almacenamiento menos fiable del sandbox.

El desarrollador debe eliminar explícitamente los archivos temporales después de completar una operación usando FileManager.removeItem(at:). Los archivos no eliminados en tmp se acumulan y desperdician espacio en disco — iOS no garantiza su limpieza automática a corto plazo.

Temporary Directory vs Caches Directory

Comparar tmp y Caches ayuda a los desarrolladores a tomar la decisión correcta al elegir un directorio para almacenar datos. Elegir incorrectamente puede llevar a una pérdida prematura de datos o a un consumo innecesario de espacio.

ParámetroTemporary DirectoryCaches Directory
Vida útilSolo sesión actualEntre sesiones (sin garantías)
Cambio de rutaPuede cambiar cada inicioRuta estable
Limpieza automáticaAl reiniciar, al descargarCuando falta espacio
Eliminación por desarrolladorObligatoria tras operaciónRecomendada al superar límite
UsoOperaciones intermediasCaché persistente

Una regla práctica: elige tmp para datos que se eliminarán en segundos o minutos tras su creación. Elige Caches para datos que es útil conservar durante horas o días entre sesiones, pero que pueden regenerarse.

Mejores prácticas para trabajar con tmp

Trabajar con Temporary Directory requiere disciplina: dado que los datos en tmp son efímeros y su acumulación puede provocar un desperdicio de espacio, los desarrolladores deben seguir varias prácticas clave.

Elimina siempre los archivos después de usarlos

FileManager.removeItem(at:) debe llamarse inmediatamente después de completar una operación con un archivo temporal. Usa defer en Swift para garantizar la eliminación incluso si ocurre un error.

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

No uses tmp para datos de larga duración

Si los datos pueden ser necesarios una hora después de su creación — guárdalos en Caches o Application Support. tmp está diseñada para operaciones de minutos, no para almacenamiento.

Seguir estas reglas garantiza que los archivos temporales no se acumulen, el espacio en disco se utilice de manera eficiente y la aplicación maneje correctamente cualquier escenario de limpieza del sistema de archivos de iOS.

Preguntas frecuentes

¿Puede cambiar la ruta al Temporary Directory mientras la aplicación se está ejecutando?

Normalmente la ruta no cambia dentro de una misma sesión, pero iOS no lo garantiza. En casos raros, el sistema puede cambiar tmp cuando la aplicación pasa de segundo plano a primer plano. Por eso Apple recomienda llamar a NSTemporaryDirectory() cada vez que necesites la ruta en lugar de almacenarla en una variable.

¿Qué sucede si no elimino los archivos de tmp?

Los archivos se acumularán y ocuparán espacio en disco. iOS puede limpiar tmp al reiniciar el dispositivo, pero hasta entonces la aplicación desperdiciará espacio en disco. Con una acumulación significativa, el usuario puede ver en los ajustes de almacenamiento que la aplicación ocupa mucho espacio.

¿Es tmp adecuado para cifrar datos temporales?

Sí, puedes usar DataProtectionType con NSFileProtectionComplete para archivos temporales que contengan datos sensibles. Sin embargo, ten en cuenta: si el archivo solo se leerá dentro de la sesión actual y luego se eliminará, el cifrado puede ser excesivo. Evalúa la necesidad de cifrado según el tipo de datos.

¿Cómo crear un nombre de archivo único en tmp sin colisiones?

Usa ProcessInfo.processInfo.globallyUniqueString para generar un identificador único, o UUID().uuidString. FileManager también proporciona el método urlForCreatingTemporaryFile, que genera automáticamente un nombre único en tmp. Esto garantiza que no haya colisiones durante escrituras paralelas.

¿El tamaño de tmp afecta la revisión de App Store?

Indirectamente — sí. Apple presta atención a la cantidad total de datos que la aplicación almacena en el disco. Si tmp contiene gigabytes de archivos no eliminados, el revisor puede rechazar la aplicación. El límite recomendado para tmp es de no más de 100 MB en cualquier momento. Limpia tmp regularmente y verifica su tamaño mediante FileManager.

Resumen

  • Temporary Directory (tmp) — directorio para datos cuya vida útil se limita a la sesión actual de la aplicación.
  • La ruta a tmp puede cambiar entre ejecuciones — no la guardes en almacenamiento persistente.
  • El sistema puede limpiar tmp al reiniciar el dispositivo o descargar la aplicación.
  • Los archivos de tmp no se incluyen en las copias de seguridad de iCloud e iTunes.
  • A diferencia de Caches Directory, tmp no está diseñada para almacenamiento entre sesiones.
  • El desarrollador debe eliminar explícitamente los archivos temporales con FileManager.removeItem.
  • Usa defer en Swift para garantizar la eliminación de archivos temporales independientemente del resultado de la operación.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también