Domanda

Io sono il caricamento di un certo numero di UIViews su un UIScrollView e sto cercando di rintracciare il motivo per cui stanno usando così tanta memoria. Dopo un processo di eliminazione utilizzando strumenti ho scoperto che l'impostazione del colore di sfondo delle viste aumenta l'utilizzo di memoria di 4 volte.

Se non si imposta il colore di sfondo l'utilizzo della memoria si trova a circa 4.5megs. Non appena ho impostato il colore di sfondo a tutto ciò redcolor o clearColor l'utilizzo della memoria passa a 17megs.

Ecco il codice:

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

Qualcuno sa che cosa potrebbe causare questo?

Quali sono davvero dopo è quello di avere il fondo chiaro. Se non v'è alcun modo per aggirare questo, c'è un altro modo di impostare lo sfondo di un UIView per essere chiari?

È stato utile?

Soluzione

Tutte le istanze di UIView (e le classi che ne derivano) avere un oggetto CALayer associato (accessibile tramite la proprietà del livello) che fornisce l'aspetto visivo del UIView. Il CALayer può avere un proprio bitmap, è possibile condividere una bitmap con un altro oggetto CALayer (che è come le riflessioni sono fatte), oppure può avere alcun bitmap.

Quando un UIView funge da contenitore per altri controlli, non si dispone bitmap associati con il suo strato, quindi utilizza poca memoria. Non appena si imposta il suo colore di sfondo, che il backup bitmap deve essere creato in modo che ci sia qualcosa per il rendering. Se la sottoclasse UIView implementa drawRect di trarre alcuni elementi grafici nella vista, la stessa cosa accadrà.

A causa di una vista dimensioni a tutto schermo consuma molta memoria, quando si implementa una soluzione basata UIScrollView, si dovrebbe caricare solo il punto di vista che vengono visualizzati e le due lati. Non creare un sacco di loro in anticipo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top