Est-il un moyen de vider le cache utilisé par UIImage classe?

Il est bien connu que UIImage cache les données d'image lorsque l'image est chargée à l'aide de la imageNamed: méthode.

De la documentation d'apple:
https://developer.apple.com/documentation/uikit/uiimage/1624146-imagenamed

imageNamed:

Discussion: Cette méthode ressemble à la
système de cache pour une image de l'objet avec
le nom spécifié et retourne que
objet, si elle existe. Si une correspondance
l'image de l'objet n'est pas déjà dans le
cache, cette méthode de charger l'image
données à partir du fichier spécifié, caches
il, puis renvoie la qui en résulte
objet.

À cause de cela, après le chargement de plusieurs images avec imageNamed: j'ai remarqué une forte augmentation de l'utilisation de la mémoire et aussi que la mémoire a été conservée dans de l'utiliser même après que le contrôleur qui a chargé les images dealloc. (au moins, il n'a pas augmenté à nouveau quand je alloc le même contrôleur)

Qui m'a fait me demander si il existe un moyen de vider le cache utilisé par UIImage par programme à un moment donné de ma vie de l'application, voire de contrôler certains paramètres de cache (comme la quantité maximale de mémoire qu'il peut utiliser, par exemple)

Je sais que je pourrais facilement résoudre ce problème en utilisant initWithData, imageWithData, imageWithContentsOfFile ou de tout autre initialiseur au lieu de imageNamed, mais ce comportement du cache est souhaitée lors de l'utilisation de plusieurs images, comme l'intérieur d'un UITableView.

Toute réflexion sur la façon de le réaliser?

EDIT:
Après quelques réponses, je tiens juste à préciser qu'il y a un énorme fossé entre la nécessité de faire quelque chose et d'avoir la possibilité de faire quelque chose. Comme je l'ai souligné, je sais que l'OS prend soin de mettre en cache pour moi, j'essaie juste de voir les limites que le SDK iOS impose.

  • Je sais que c'est une vieille question, mais le montage a été de nouveau...le seul moyen que je connaisse pour effacer le cache manuellement grâce à un sans-papiers, méthode privée, donc je suppose que ce n'est pas vraiment possible.
  • vraiment? quelle méthode est-ce? Je pourrais être sympa de jouer avec ça! privée de l'API règles ne s'appliquent pas pour les ad hoc uniquement les apps 😉
  • Haha, c'est une méthode de classe sur UIImage. [UIImage _flushSharedImageCache]; Il y a aussi [image removeFromCache]; ainsi que [UIImage removeImageNameFromCache:@"imageName"];
  • stackoverflow.com/questions/14908131/...
  • bonne réponse, mais il semble que le cache qui UIImage utilise lorsque la imageNamed: méthode est appelée mémoire cache, et non pas un fichier de disque (comme il n'aurait aucun sens, car les images de imageNamed: sont déjà un fichier dans l'application bundle, différemment à partir d'images chargées avec imageWithData: et d'autres méthodes similaires). Ainsi, le _flushSharedImageCache efface la mémoire allouée utilisé par les images dans le cache, la réduction du nombre d'avertissements de mémoire dans une utilisation massive de la mémoire application (qui était au départ, mon intention par le temps, j'ai demandé). Mais tks de toute façon 😉