2009-07-01 23 views
2

Ziemlich neu zu iPhone/Ziel-C.iPhone Leistung mit Bitmaps

Ich habe eine Anwendung, die 15-100 kleine Bilder (16x16 oder 8x8 PNG) auf dem Bildschirm hat. Nehmen wir zum Beispiel an, dass ich diese Bilder mit CGContext erstellen kann, wenn es nötig ist.

Ich würde annehmen müssen, dass iPhone mit dieser Methode besser durchführen würde, anstatt Bilder (PNGs) zu laden. Allerdings ist die Bitmap-Version einfacher zu entwickeln und hat auch andere Vorteile (wie eingebaute Touch-Ereignisse), die ich brauche.

Wenn die Leistung nicht die endgültige Metrik für diese Anwendung ist, wird Platzierung 100 kleine Bilder verschlechtern Leistung/Speicher genug, um sogar überlegen zu dem CGContext Umschaltungsverfahren. Mein Instinkt sagt mir, dass ich keinen so großen Leistungsunterschied sehen werde, aber ich bin zu neu für die iPhone-Entwicklung, um genug darüber zu wissen, um einen Unterschied zu machen.

Antwort

0

Ich würde zuerst die Bitmap-Version versuchen, dann CGContext eine, wenn Bitmap zu langsam ist.

DANN, wenn es immer noch zu langsam ist, würde ich alle Symbole in eine GL-Textur setzen.

1

Ich nehme an, es hängt von der Komplexität Ihres Bilderstellungsalgorithmus ab.

Ich werde auch von Ihrer Anwendung abhängig sein: Werden Sie diese Bilder viele Male pro Sekunde zeichnen, wie in einer Animation? Wenn das der Fall ist, verwenden Sie UIImageViews.

+0

danke! Es wird keine Animation geben. Ich kann den gesamten Bildschirm alle paar Sekunden von so aktualisieren, aber das wäre maximale Menge an Neuzeichnen –

+0

Wenn das Neuzeichnen eine sofortige Reaktion auf Benutzerinteraktion ist, können Sie eine Verzögerung fühlen, also versuchen Sie es und sehen, wie es geht. –

1

Ich denke, 100 oder so UIImageViews verwenden, sollte so lange in Ordnung sein, wie Sie brauchen nicht schnell, sie animieren oder sie zur gleichen Zeit aktualisieren. Sie sollten alles vermeiden, was die Größe der Ansichten ändern würde (z. B. die Größe der Ansicht, in der sie enthalten sind), und wenn Sie Core Animation verwenden, um sie zu animieren, führen Sie alle Animationen in einem einzelnen Animationsblock aus. (Wickeln Sie alles mit einem [UIView beginAnimations: Kontext:], [UIView commitAnimations] - nicht eine für jede Ansicht)

Viel Glück!