2009-12-08 10 views
1

J'essaie de conserver la consommation de mémoire dans ma visualisation. J'ai un scrollView avec un containerView qui contient des vues enfants. Je voudrais éliminer le calayer de scrollView et containerView. Ainsi, seules les vues enfants consomment de la mémoire pendant les retraits, etc.Comment forcer un UIView "conteneur" à ne pas avoir CALayer?

Comment faire?

Merci, Doug

Répondre

5

Toutes les sous-classes UIViews et UIView sur l'iPhone sont soutenus par CALayers. Il n'y a pas vraiment grand-chose à faire pour éviter cela, car c'est une supposition faite par UIKit. (Dans Cocoa pour Mac, vous pouvez spécifier quelles vues ont CALayers, cependant!)

Alors que vous pourriez être en mesure de pirater quelques choses et détruire les calayers de certaines vues, je ne le recommanderais pas. J'ai écrit des applications de peinture assez complexes, et je n'ai jamais eu de problème avec CALayers consommant de grandes quantités de mémoire. N'oubliez pas que vous pouvez utiliser environ 25 Mo de mémoire en toute sécurité avant que votre application ne reçoive un avertissement de mémoire. Si vous constatez que votre application utilise beaucoup de mémoire et que vous dessinez, il y a probablement un autre problème.

Espoir qui aide,

Ben

0

Ma couche contenant est seulement des points de 1x1 grand, et utilise donc très peu de mémoire. (Je ne l'ai pas essayé 0x0 et ne sais pas si cela va marcher.)

Avec clipsToBounds == NO (valeur par défaut), tous les sous-vues sont encore visibles, même si elles sont « qui sort » de leur vue des parents.

Si vos subviews doivent recevoir des événements que vous devrez écraser -pointInside:withEvent: pour revenir YES pour les points à l'intérieur des limites « réelles » de votre point de vue du conteneur.