Temporary Directory — o que é, arquivos temporários e gerenciamento de armazenamento

Autor: IT Sectr Publicado: 2026-07-10 Tempo de leitura: 10 min

Temporary Directory (tmp) é um diretório na sandbox de aplicativos iOS para armazenar dados de curtíssimo prazo que são necessários apenas durante a sessão atual do aplicativo. De acordo com o Apple File System Programming Guide (2024), o sistema pode limpar o tmp a cada término do aplicativo ou reinicialização do dispositivo. Ao contrário do Caches Directory, os arquivos temporários no tmp não se destinam a persistir entre inicializações — o desenvolvedor deve excluí-los explicitamente após o uso para não desperdiçar espaço em disco.

Pontos principais

  • Temporary Directory — diretório para dados necessários apenas na sessão atual do aplicativo.
  • O iOS pode limpar o tmp ao reiniciar o dispositivo ou encerrar o aplicativo.
  • Arquivos no tmp não são incluídos nos backups do iCloud e iTunes.
  • O caminho para o tmp é obtido via NSTemporaryDirectory() em Swift ou Objective-C.
  • O desenvolvedor deve excluir manualmente os arquivos do tmp após o uso.

O que é Temporary Directory no iOS?

Temporary Directory (também conhecido como tmp) é um diretório dentro da sandbox de aplicativos iOS projetado para armazenar dados cujo tempo de vida é limitado à sessão atual. É o armazenamento mais efêmero entre todos os diretórios da sandbox.

O iOS fornece o tmp para operações que exigem armazenamento intermediário de arquivos: baixar um arquivo antes de movê-lo para Documents, criar uma cópia temporária antes de exportar, armazenar em buffer dados de streaming. Após a conclusão da operação, os arquivos temporários devem ser excluídos.

De acordo com a Documentação do Apple Developer (2024), o diretório tmp é único porque seu caminho pode mudar entre as inicializações do aplicativo. O iOS gera um novo caminho para o tmp a cada inicialização — isso garante que os dados da sessão anterior não sejam lidos acidentalmente. O desenvolvedor nunca deve salvar o caminho do tmp entre inicializações.

Importante: ao contrário do Caches Directory, onde os dados podem sobreviver a várias inicializações, o tmp não garante a persistência de dados entre sessões a longo prazo. É a maneira mais confiável de armazenar dados verdadeiramente temporários.

Como obter o caminho para o Temporary Directory

Em Swift, para obter o caminho para o tmp, usa-se a função global NSTemporaryDirectory() ou FileManager.temporaryDirectory. Estas são as APIs mais simples entre todos os diretórios da 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 a mesma função global NSTemporaryDirectory(). O resultado é uma string com o caminho completo para o diretório temporário do aplicativo.

objective-c
@import Foundation;

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

Uma diferença importante de outros diretórios: NSTemporaryDirectory() não requer a especificação de um domínio ou máscara de busca — é uma função global. No entanto, o caminho pode mudar na próxima inicialização, portanto nunca o salve no UserDefaults ou em qualquer outro armazenamento persistente.

Quais dados armazenar no tmp

Temporary Directory é destinada a um conjunto estritamente definido de cenários. Os desenvolvedores frequentemente confundem tmp com Caches, colocando no tmp dados que deveriam durar mais de uma sessão. Vamos ver os casos de uso corretos.

Arquivos intermediários durante exportação

Arquivos criados durante a exportação de dados: uma cópia temporária de um relatório antes de enviá-lo por e-mail, um arquivo compactado antes do upload, um arquivo intermediário de conversão de formato. Após a conclusão da exportação, o arquivo deve ser excluído.

Buffer de dados de streaming

Buffers temporários para gravação de áudio, vídeo ou dados de streaming processados em tempo real. Por exemplo, gravação de voz antes de salvar no armazenamento permanente, ou buffer de fluxo de vídeo durante o streaming.

CenárioDiretórioJustificativa
Exportar PDF antes de enviartmpArquivo não necessário após envio
Cache de imagensCachesÚtil entre sessões
Baixar arquivo antes de movertmpArmazenamento intermediário
Logs de sessãotmpRelevantes apenas na sessão
Editar documentotmpVersão antes de salvar

Se os dados são necessários apenas aqui e agora — use tmp. Se podem ser úteis na próxima sessão — use Caches. Se a perda de dados é inaceitável — use Documents.

Ciclo de vida dos arquivos temporários

iOS gerencia o ciclo de vida do tmp de forma diferente dos outros diretórios da sandbox. Entender esse ciclo é fundamental para projetar corretamente o armazenamento de arquivos no aplicativo.

A cada inicialização, o iOS pode alocar um novo caminho para o tmp. O caminho anterior se torna inacessível, embora os arquivos físicos possam permanecer no disco até a reinicialização do dispositivo. É por isso que a Apple recomenda fortemente não salvar o caminho do tmp entre sessões.

De acordo com o Apple Tech Note TN2150 (2024), o sistema pode limpar o tmp nos seguintes casos: reinicialização do dispositivo, limite de espaço em disco atingido, descarregamento do aplicativo (Offload). Ao contrário do Caches, o tmp não se destina a armazenar dados mesmo entre várias inicializações — é o armazenamento menos confiável da sandbox.

O desenvolvedor deve excluir explicitamente os arquivos temporários após concluir uma operação usando FileManager.removeItem(at:). Arquivos não excluídos no tmp se acumulam e desperdiçam espaço em disco — o iOS não garante sua limpeza automática no futuro próximo.

Temporary Directory vs Caches Directory

Comparar tmp e Caches ajuda os desenvolvedores a tomar a decisão correta ao escolher um diretório para armazenamento. Escolher incorretamente pode levar à perda prematura de dados ou ao consumo desnecessário de espaço.

ParâmetroTemporary DirectoryCaches Directory
Tempo de vidaApenas sessão atualEntre sessões (sem garantias)
Mudança de caminhoPode mudar a cada inicializaçãoCaminho estável
Limpeza automáticaAo reiniciar, ao descarregarQuando falta espaço
Exclusão pelo desenvolvedorObrigatória após operaçãoRecomendada ao exceder limite
UsoOperações intermediáriasCache persistente

Uma regra prática: escolha tmp para dados que serão excluídos em segundos ou minutos após a criação. Escolha Caches para dados que são úteis para manter por horas ou dias entre sessões, mas que podem ser regenerados.

Melhores práticas para trabalhar com tmp

Trabalhar com Temporary Directory requer disciplina: como os dados no tmp são efêmeros e seu acúmulo pode levar ao desperdício de espaço, os desenvolvedores devem seguir várias práticas importantes.

Sempre exclua os arquivos após o uso

FileManager.removeItem(at:) deve ser chamado imediatamente após concluir uma operação com um arquivo temporário. Use defer em Swift para garantir a exclusão mesmo quando ocorrer um erro.

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

Não use tmp para dados de longa duração

Se os dados podem ser necessários uma hora após a criação — salve-os em Caches ou Application Support. O tmp é projetado para operações de minutos, não para armazenamento.

Seguir essas regras garante que os arquivos temporários não se acumulem, o espaço em disco seja usado de forma eficiente e o aplicativo lide corretamente com qualquer cenário de limpeza do sistema de arquivos iOS.

Perguntas frequentes

O caminho para o Temporary Directory pode mudar enquanto o aplicativo está em execução?

Normalmente o caminho não muda dentro de uma única sessão, mas o iOS não garante isso. Em casos raros, o sistema pode alterar o tmp quando o aplicativo passa do fundo para o primeiro plano. É por isso que a Apple recomenda chamar NSTemporaryDirectory() sempre que precisar do caminho, em vez de armazená-lo em uma variável.

O que acontece se eu não excluir os arquivos do tmp?

Os arquivos se acumularão e ocuparão espaço em disco. O iOS pode limpar o tmp ao reiniciar o dispositivo, mas até lá o aplicativo desperdiçará espaço em disco. Com um acúmulo significativo, o usuário pode ver nas configurações de armazenamento que o aplicativo está ocupando muito espaço.

O tmp é adequado para criptografar dados temporários?

Sim, você pode usar DataProtectionType com NSFileProtectionComplete para arquivos temporários contendo dados sensíveis. No entanto, lembre-se: se o arquivo for lido apenas na sessão atual e depois excluído, a criptografia pode ser excessiva. Avalie a necessidade de criptografia com base no tipo de dados.

Como criar um nome de arquivo único no tmp sem colisões?

Use ProcessInfo.processInfo.globallyUniqueString para gerar um identificador único, ou UUID().uuidString. O FileManager também fornece o método urlForCreatingTemporaryFile, que gera automaticamente um nome único no tmp. Isso garante a ausência de colisões durante gravações paralelas.

O tamanho do tmp afeta a revisão da App Store?

Indiretamente — sim. A Apple presta atenção à quantidade total de dados que o aplicativo armazena em disco. Se o tmp contiver gigabytes de arquivos não excluídos, o revisor pode rejeitar o aplicativo. O limite recomendado para o tmp é de no máximo 100 MB a qualquer momento. Limpe o tmp regularmente e verifique seu tamanho através do FileManager.

Resumo

  • Temporary Directory (tmp) — diretório para dados cujo tempo de vida é limitado à sessão atual do aplicativo.
  • O caminho para o tmp pode mudar entre inicializações — não o salve em armazenamento persistente.
  • O sistema pode limpar o tmp ao reiniciar o dispositivo ou descarregar o aplicativo.
  • Arquivos no tmp não são incluídos nos backups do iCloud e iTunes.
  • Ao contrário do Caches Directory, o tmp não é projetado para armazenamento entre sessões.
  • O desenvolvedor deve excluir explicitamente os arquivos temporários usando FileManager.removeItem.
  • Use defer em Swift para garantir a exclusão de arquivos temporários independentemente do resultado da operação.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também