Apple hat mich abgelehnt, keine Ahnung warum oder wie ich es beheben kann

8

so ist die Geschichte, Apple kürzlich meine App abgelehnt, sagen, es stürzte auf ihren Handys (iPhone 3G und iPod touch 2g), und senden Sie mir zwei Crash-Protokolle. WEDER, aus dem ich einen Sinn machen kann.

Hier sind sie.

%Vor%

sagten sie auch nach einem Neustart gibt es keinen Unterschied. Heres der Kicker, es funktioniert perfekt auf meinem iPhone 3GS und im Simulator ohne Speicherlecks.

Also, was um alles in der Welt mache ich?

UPDATE:

Loggen Sie sich im Simulator ein      [Sitzung gestartet am 2010-01-16 20:01:44 +1300.] GNU gdb 6.3.50-20050815 (Apple-Version gdb-1346) (Fr Sep 18 20:40:51 UTC 2009) Copyright 2004 Freie Software-Grundlage, Inc. GDB ist freie Software, die von der GNU General Public License abgedeckt wird willkommen, es zu ändern und / oder Kopien von ihm unter bestimmten Bedingungen zu verteilen. Geben Sie "show copying" ein, um die Bedingungen zu sehen. Es gibt keinerlei Garantie für GDB. Geben Sie "show guarantee" für Details ein. Diese GDB wurde als "x86_64-apple-darwin" konfiguriert .sharedlibrary apply-load-rules all Anfügen an Prozess 1152. dyld: konnte die eingefügte Bibliothek nicht laden: /usr/lib/libgmalloc.dylib

Datenformatierer vorübergehend nicht verfügbar, wird nach einem "Fortfahren" erneut versuchen. (Derzeit kann nicht in den Loader gerufen werden, es ist gesperrt.) Warnung: Konnte Minimalsymbol für "_sigtramp" nicht finden - Rückverfolgung kann unzuverlässig sein Zugriff auf Speicher unter Adresse 0x0 nicht möglich Zugriff auf Speicher unter Adresse 0x0 nicht möglich (gdb)

    
Sam Jarman 16.01.2010, 05:15
quelle

5 Antworten

5

Wie andere gesagt haben, verwenden Sie zu viel Speicher.

Wenn Sie mehrere Seiten von View-Controllern verwenden, probieren Sie diesen einfachen Test aus - führen Sie Ihre App mit dem ObjectAlloc-Instrument aus. Klicken Sie auf etwas, um eine Unteransicht aufzurufen. Sie sollten sehen, dass sich Ihr Speicher erhöht. Wenn Sie jetzt diese Ansicht verlassen und zur Hauptansicht zurückkehren, sollte der Speicher sinken. Wenn nicht, dann ist das dein Problem (oder eines davon, aber das ist ein guter Startpunkt).

Um dies nachzuverfolgen, platzieren Sie Haltepunkte in dealloc für jeden Ihrer View-Controller und sehen Sie, was tatsächlich aufgerufen wird. Für View-Controller, die nicht wie erwartet freigegeben werden, können Sie in ObjectAlloc sehen, wo jeder Retainer für ein Objekt ausgegeben wurde, und entscheiden, was das Objekt behalten hat, wenn dies nicht der Fall war.

Im Allgemeinen sollte der ObjectAlloc-Fluss wie ein Graph aussehen, der die ganze Zeit auf- und abgeht und nicht ständig ansteigt.

Wenn Sie eine große Anzahl von Bildern verwenden, sollten Sie sie auf die benötigte Größe umstellen, anstatt mit einer viel größeren Größe und Skalierung zu beginnen. Die Verwendung von so viel Speicher muss darauf zurückzuführen sein, dass Bilder verwendet und nicht freigegeben werden. Leaks melden nichts, wenn Sie immer noch Referenzen auf den Speicher haben, den Sie behalten.

Kaufen Sie auch einen älteren Touch zum Testen.

    
Kendall Helmstetter Gelner 16.01.2010, 05:55
quelle
5

Siehe "freie Seiten: 309"? nicht gut, bedeutet, dass Sie eine Menge Speicher verwenden, wenn sie alle verwendet wird, stürzt sie ab. Und die löschbaren Seiten = 0 ist Speicher, der nicht zurückgewonnen werden kann, so dass es sich um ein Speicherproblem handelt.

Machen Sie ein "Build and Analyze" und führen Sie "Leaks" aus, um Speicherlecks und Orte zu finden, die Sie effizienter ausführen können.

    
ACBurk 16.01.2010 05:26
quelle
3

Ihre App hat zu viel Speicher verbraucht. Überprüfen Sie Ihre App mit Geräten (Object Allocations oder Leaks) und prüfen Sie, ob Sie die Speicherzuweisung reduzieren können.

    
kennytm 16.01.2010 05:20
quelle
3

Ihr iPhone 3GS und der Simulator haben weit mehr Speicher als die anderen iPhone OS-Geräte. Um auf allen Geräten zu arbeiten, sollten Sie nicht mehr als 20 MB Speicher verwenden.

    
CajunLuke 16.01.2010 05:43
quelle
2

Deine App benutzt viel, viel zu viel Speicher. Es wird nie auf älteren Geräten mit 128 MB RAM ausgeführt.

    
Darren 16.01.2010 05:21
quelle

Tags und Links