2009-06-02 4 views
2

Das Problem ist, dass meine App hunderte von Megabyte in das Benutzerdokumentverzeichnis auf ihrem iPhone speichert. Während des Tests benötigt der iPhone-Simulator sehr viel Zeit, um die App bei jedem Build zu starten, da alle diese Daten bei jeder Neuerstellung in ein neues Dokumentenverzeichnis kopiert werden. Gibt es eine Lösung dafür, dass das Verzeichnis jedes Mal an der gleichen Stelle bleibt oder den Start in irgendeiner Weise beschleunigt? Zum Beispiel ändert der Regisseur mit HEX-Werten jeden Rebuild/Relaunch auf dem iPhone Simulator und es kann ziemlich zeitaufwendig sein:Wie beschleunige ich den App-Start im iPhone Simulator?

./Library/Application Support/iPhone Simulator/Benutzer/Anwendungen/B32A0BA1-5843-4FDE-B5FB -4E40460BD8CC/​​Dokumente/

Danke,

Matt

+0

Wie ist die Geschwindigkeit des Geräts relativ zum Simulator? – Nosredna

+0

Die Startgeschwindigkeit ändert sich nicht auf dem Gerät, da mehr Dokumentdateien hinzugefügt werden, aber im Simulator erhalte ich ein drehbares Apfelfarbrad für 10 Sekunden mit 250 MB Fotos (die während des Starts nicht von meiner App verwendet werden). Es scheint fast so, als würde XCode oder der Simulator diese Dateien irgendwie "verarbeiten", da der Start ohne sie sofort erfolgt. Die Zeit scheint zuzunehmen, da ich mehr Daten im Dokumentenverzeichnis angehäuft habe. – Matt

Antwort

11

Der Simulator muss sich (im Gegensatz zum Gerät selbst) nicht an den Sandkastenpositionen halten. So

, wenn Dateien aus dem Simulator zu speichern, könnten Sie versuchen:

#if TARGET_IPHONE_SIMULATOR 

// save your files to a fixed location on your hard-disk 
// (like /Users/yourusername/MyIPhoneAppDebugStorage) 

#else 

// Save files normally 
// (to [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
//  NSUserDomainMask, YES) objectAtIndex:0]) 

#endif 

Auf diese Weise Ihre großen Dateien immer an einem festen Platz auf der Festplatte sind, wenn sie aus dem Simulator ausgeführt wird.

+0

Danke - das funktioniert perfekt! Mein Simulator brauchte fast 10 Minuten, um die App zu laden, als ich 1,5 GB Daten im NSDocumentDirectory hatte, lädt jetzt aber fast augenblicklich mit dem obigen Fix. – Matt

0

Buildzeit zu verkürzen, ist die einfachste Sache, wahrscheinlich ein neues XCode Ziel zu schaffen, die eine angemessene Teilmenge der Daten enthält. Unter der Annahme, dass diese Datendateien "Ressourcendateien" im XCode-Projekt sind, können Sie Ihr App-Ziel duplizieren, "app lite" umbenennen und die Build-Phase "Copy Resources" so bearbeiten, dass nicht alle Dateien enthalten sind (oder eine einzelne kleinere Datei oder was auch immer).

+0

Tut mir leid, wenn ich nicht mehr klar war, aber diese Dateien sind keine "Resource" -Dateien im XCode-Projekt, sondern Dateien, die während der Ausführung im App-Verzeichnis gespeichert werden ([NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex : 0]). Danke für die Antwort. – Matt

0

XCode erstellt nicht jedes Mal ein neues Verzeichnis, wenn Sie es erstellen und ausführen, es benennt nur das alte um.

Ich habe Daten, die ich im Dokumentenverzeichnis speichern und sein dort jeden Start, wenn ich es explizit löschen, bevor meine Anwendung ausgeführt wird.

Ich wäre gespannt, wo die Zeit genommen wird, wenn der Simulator gestartet wird. Können Sie über die App debuggen? (Ist es Ihr Code, der sich die Zeit nimmt?)

chris.

+0

Hallo PyjamaSam. Sie haben wahrscheinlich Recht, dass es das Verzeichnis umbenennt (ich habe gerade gesehen, was beim Starten der App passiert ist), aber der Simulator scheint während der Startphase etwas mit den Dokumenten zu tun.Zum Beispiel hat meine App eine 3MB sqlite-Datei und 250 MB Fotos im Verzeichnis Dokumente. Beim Start macht mein Code nichts mit diesen Fotodateien, aber ziemlich viel mit der SQL-Datei. Wenn ich jedoch die Fotodateien aus dem Dokumentverzeichnis entferne, wird es sofort gestartet. Wenn Sie sie wieder einlegen, kommt es zu einer Verzögerung von 10 Sekunden, bevor die App gestartet wird (nur das sich drehende Farbrad). – Matt

2

Gerade verlassen den Simulator geöffnet nach dem ersten Lauf. Stoppen Sie einfach das Programm in XCode, ohne den Simulator zu schließen. Im nächsten Test-Launch muss also nur die App geladen werden, ohne den Simulator erneut zu laden.

Es beschleunigte wirklich etwas für mich.