Сделать именно то, что вы хотите, невозможно, но вы можете сделать что-то похожее по функциональности.
Для кэширования изображений вы можете просто использовать существующую библиотеку, например SDWebImage . Он управляет асинхронной загрузкой и кешированием изображений, а для очистки кешированных изображений вы можете просто сделать
SDImageCache.sharedImageCache().clearMemory()
SDImageCache.sharedImageCache().clearDisk()
Теперь, что касается , когда вы хотите очистить кеш, это немного сложно.
Вы не можете очистить кеш при завершении работы приложения, потому что нет способа надежно определить, когда приложение завершено. Существует метод UIApplicationDelegate.applicationWillTerminate
, но он не вызывается, если приложение завершает работу в приостановленном состоянии.
Но вы можете сделать обходной путь: просто очистите кеш при запуске приложения в UIApplicationDelegate.application(_:didFinishLaunchingWithOptions:)
, что приведет к быть функционально эквивалентным тому, что вы хотите сделать.