2009-06-15 11 views
0

Funktioniert die state pattern in einer iPhone-Anwendung - In meinem Fall eine relativ leichte Dienstanwendung - zu viel Speicher verwenden?Statusmuster in iPhone-Anwendungen (Speichernutzung)

Die state pattern, wie ich es verstehe, verwendet mehrere Klassen; Diese Klassen repräsentieren verschiedene Zustände. Alle verschiedenen Statusobjekte werden instanziiert und in verschiedenen Zeigervariablen gespeichert, bis der Status benötigt wird. An diesem Punkt wird sie auf ein Objekt curState gesetzt.

Ich stelle fest, dass ich jedes Zustandsobjekt laden könnte, um etwas Speicher und Ladezeit zu sparen; Ich könnte dann die Objekte freigeben, wenn meine App eine Speicherwarnung erhält.

Aber was ich wissen wollte ist, verwendet dieses Muster zu viel Speicher für den allgemeinen Gebrauch in einer iPhone OS-Anwendung? Sollten sich iPhone-Entwickler von diesem Muster fernhalten? Gibt es ein anderes Muster, das besser für das iPhone OS geeignet ist?

Antwort

1

Es lohnt sich nicht, sich Sorgen zu machen. Es sei denn, Ihre Zustände sind immens kompliziert oder Sie haben Tausende und Abertausende von ihnen, dann werden alle Kunst- oder Mediendateien, die in Ihrer Anwendung enthalten sind, sie absolut überschwemmen.

Ich meine im Allgemeinen - schwitzen Sie nicht den Speicherverbrauch Ihrer Modellobjekte. Objective-C-Objekte sind in Bezug auf die Speichernutzung recht leicht. Wenn Sie eine ziemlich typische Modellklasse mit etwa einem halben Dutzend Feldern haben, von denen jedes ein Zeiger auf ein anderes Objekt ist, beträgt die Gesamtspeicherauslastung für jede Instanz dieser Klasse ungefähr 32 Bytes oder so. Wenn Sie 1.000 davon in ein Array oder eine andere Datenstruktur einfügen, würde das ungefähr so ​​viel Speicher belegen wie eine 128x128-Bitmap.

Es ist viel wahrscheinlicher, dass Sie Probleme mit dem Arbeitsspeicher bekommen, weil Sie an Grafiken oder Sounds hängen, die Sie nicht benötigen, als Sie es von den "funktionierenden" Teilen Ihrer Anwendung gewohnt sind.

+0

In Bezug auf die Kunst und Mediendateien -> das wäre nur, wenn die Kunst-und Mediendateien in den Staatsobjekten waren, richtig? –

+0

Einige Details zu meiner Antwort hinzugefügt. –

+0

Vielen Dank für die Beantwortung meiner Frage. –