Frage

Ich lade eine Reihe von UIViews in eine UiscrollView und versuche nachzuverfolgen, warum sie so viel Speicher verwenden. Nach einem Eliminierungsprozess unter Verwendung von Instrumenten habe ich festgestellt, dass die Festlegung der Hintergrundfarbe der Ansichten die Speicherverwendung um das 4 -fache erhöht.

Wenn ich die Hintergrundfarbe nicht feststelle, liegt die Speicherverwendung bei rund 4,5 megs. Sobald ich die Hintergrundfarbe auf irgendetwas redcolor einstellte oder löschte, springt die Speicherverwendung auf 17 Megs.

Hier ist der Code:

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

Weiß jemand, was das verursachen könnte?

Ich danach wirklich nach dem Hintergrund ist klar. Wenn es keinen Weg gibt, gibt es eine andere Möglichkeit, den Hintergrund einer UIView klar zu setzen, um klar zu sein?

War es hilfreich?

Lösung

Alle Fälle von UIView (und daraus abgeleitete Klassen) haben ein zugeordnetes Calayer -Objekt (zugegriffen über die Layer -Eigenschaft), auf die das visuelle Erscheinungsbild der UIView bereitstellt. Der Calayer kann seine eigene Bitmap haben, er kann eine Bitmap mit einem anderen Calayer -Objekt (so wie Reflexionen durchgeführt) teilen oder es kann keine Bitmap haben.

Wenn ein UIView als Container für andere Steuerelemente fungiert, ist es keine Bitmap, die der Ebene zugeordnet ist, und verwendet daher nur sehr wenig Speicher. Sobald Sie die Hintergrundfarbe eingestellt haben, muss diese Unterstützung von Bitmap so erstellt werden, dass etwas zu rendern ist. Wenn die UIView -Unterklasse DrawRect implementiert, um einige Grafiken in die Ansicht zu ziehen, wird dasselbe geschehen.

Da eine Ansicht mit Vollbildgröße viel Speicher verbraucht, sollten Sie bei der Implementierung einer UiscrollView-basierten Lösung nur die angezeigten Ansichten und die beiden beiden Seiten laden. Erstellen Sie keine Menge von ihnen im Voraus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top