Есть ли способ очистить кеш, используемый классом UIImage?

Хорошо известно, что UIImage кэширует свои данные изображения, когда изображение загружается с использованием метода imageNamed: . .

Из документации Apple: https://developer.apple.com/documentation/uikit/uiimage/1624146-imagenamed

imageNamed:

Обсуждение : Этот метод выглядит в системные кеши для объекта изображения с указанное имя и возвращает это объект, если он существует. Если соответствие объект изображения еще не находится в cache, этот метод загружает изображение данные из указанного файла, кэширует it , а затем возвращает результат

Из-за этого после загрузки нескольких изображений с imageNamed: я заметил значительное увеличение использования памяти, а также то, что память использовалась даже после того, как контроллер, который загружал изображения, был освобожден. (по крайней мере, он не увеличивался снова, когда я выделял тот же контроллер)

Это заставило меня задуматься, есть ли какой-либо способ программно очистить кеш, используемый UIImage, в любой момент жизненного цикла моего приложения или даже контролировать некоторые параметры кеша (например, максимальный объем памяти, который он может использовать)

Я знаю, что могу легко решить эту проблему, используя initWithData , imageWithData , imageWithContentsOfFile или любой другой инициализатор вместо imageNamed , но такое поведение кеша желательно при использовании нескольких изображений, После нескольких ответов я просто хочу прояснить, что существует огромный разрыв между необходимостью что-то делать и возможностью что-то сделать. Как я уже отмечал, я знаю, что ОС заботится об этом кеше за меня, я просто пытаюсь увидеть ограничения, которые налагает iOS SDK.

39
задан Cœur 29 June 2017 в 15:44
поделиться