J'ai implémenté une grande liste de vues dans un UIScrollView. Je ne peux pas utiliser une vue de table en raison de la nature de mon application.removeFromSuperView/mémoire/changement de vue dynamique
Fondamentalement, j'ai une collection de «blocs» qui sont des contrôleurs de vue eux-mêmes, à l'intérieur d'un UIScrollView. Tout fonctionne bien mais la mémoire est un problème sur de très grandes pages. J'ai implémenté avec succès l'ajout dynamique des sous-vues (lorsqu'elles apparaissent à l'écran, elles sont disposées et ajoutées à la vue parente). Les blocs eux-mêmes sont configurés et créés en une seule fois, mais leurs vues réelles, c'est-à-dire, block.view, ne sont pas ajoutées au grand conteneur jusqu'à ce qu'elles apparaissent à l'écran. Cela fonctionne très bien, mais j'ai besoin d'un moyen de supprimer les vues de la mémoire une fois qu'elles sortent de l'écran. removeFromSuperView les fait disparaître mais ne réduit pas l'utilisation de la mémoire.
Si je supprime instantanément FromSuperView, après addSubview, le bloc n'est pas affiché et la mémoire ne monte pas. Si je retireFromSuperview après un cycle de tirage, la mémoire augmente sur le tirage et ne redescend pas, même si vous ne voyez plus la vue. C'est comme si la vue était mise en cache jusqu'à ce que je libère la vue entière. Cela n'a aucun sens car il n'utilise pas beaucoup de mémoire avant de le dessiner, même s'il a été créé.
Je ne peux pas libérer la vue car elle appartient à mon bloc (viewcontroller) qui contient beaucoup d'autres informations (par exemple, mise en page). J'ai juste besoin de récupérer la mémoire. Je sais que garder la vue en mémoire avant un cycle de tirage ne fait pas monter la mémoire donc je ne devrais pas avoir besoin de m'en débarrasser. Par exemple, si je conserve à la place de addSubview, je sais que ma vue est toujours là, mais elle n'utilise pas presque autant de mémoire.
J'ai essayé d'appeler une mémoire d'avertissement sur la vc