Question

Je charge un certain nombre d'UiViews sur un UiscrollView et j'essaie de retrouver pourquoi ils utilisent autant de mémoire. Après un processus d'élimination à l'aide d'instruments, j'ai découvert que le réglage de la couleur d'arrière-plan des vues augmente la consommation de mémoire de 4 fois.

Si je ne définis pas la couleur d'arrière-plan, l'utilisation de la mémoire se situe à environ 4,5megs. Dès que j'ai réglé la couleur d'arrière-plan sur tout ce qui est redcolor ou clearcolor, l'utilisation de la mémoire saute à 17megs.

Voici le code:

ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)];
thumbView.tag = aCounter;
thumbView.backgroundColor = [UIColor clearColor];

Est-ce que quelqu'un sait ce qui pourrait causer cela?

Ce que je recherche vraiment, c'est d'avoir le fond clair. S'il n'y a aucun moyen de contourner cela, y a-t-il une autre façon de définir l'arrière-plan d'un uiView pour être clair?

Était-ce utile?

La solution

Toutes les instances d'UiView (et de classes dérivées de celui-ci) ont un objet Calayer associé (accessible via la propriété de couche) qui fournit l'apparence visuelle de l'UIView. Le Calayer peut avoir son propre bitmap, il peut partager un bitmap avec un autre objet Calayer (c'est ainsi que les réflexions sont faites), ou il ne peut pas avoir de bitmap.

Lorsqu'un UIView agit comme un conteneur pour d'autres contrôles, il n'a pas de bitmap associé à sa couche, il utilise donc très peu de mémoire. Dès que vous définissez sa couleur d'arrière-plan, ce bitmap de support doit être créé afin qu'il y ait quelque chose à rendre. Si la sous-classe UIView implémente Drawrect pour dessiner des graphiques dans la vue, la même chose se produira.

Étant donné qu'une vue de taille complète consomme beaucoup de mémoire, lorsque vous implémentez une solution basée sur UiscrollView, vous ne devez charger que les vues affichées et les deux de chaque côté. Ne créez pas beaucoup d'eux à l'avance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top