У меня запущен процесс в DispatchQueue, который создает временный файл.Файл удаляется в блоке отсрочки, поэтому очистка происходит независимо от того, выдана ли ошибка или я просто возвращаюсь из process()
в обычном режиме.См. Код ниже
func process() throws {
let file = createTemporaryFile()
defer {
deleteTemporaryFile(file)
}
try callCodeThatMightThrowErrors()
}
dispatchQueue.async {
do {
try process()
} catch {
dealWithError()
}
}
Теперь все это работает нормально, пока я не выйду из приложения.Если у меня есть DispatchQueue в настоящее время в середине функции process()
, блок отсрочки не запускается, и файл не удаляется, и я оставляю временный файл в системе.Есть ли какой-нибудь способ, которым я могу получить этот блок отложенного вызова?Я бы предпочел не хранить глобальный массив временных файлов, которые необходимо удалить при выходе из приложения.