2010-01-16 12 views
8

ecco la storia, Apple ha recentemente respinto la mia app, dicendo che si è schiantato sui loro telefoni, (iPhone 3G e ipod touch 2g) e mi ha inviato due crash log. Nulla di cui io possa dare un senso.Apple mi ha rifiutato, non so perché, o come risolverlo

Eccoli.

Incident Identifier: BA4382DD-DA6A-47F7-800D-43AD30919064 
CrashReporter Key: 53e41ca2a52f91affddc86f49ce9c4be851fcfd6 
OS Version:   iPhone OS 3.1.2 (7D11) 
Date:    2010-01-14 15:59:57 -0800 

Free pages:  317 
Wired pages:  11274 
Purgeable pages: 0 
Largest process: iConicCars 

Processes 
     Name     UUID     Count resident pages 
     amfid <b4f3e5a61456edf85b6ada59064ec311>  93 
    iConicCars <851d264eb074e465891dcd67b67a8e79> 5928 (jettisoned) (active) 
    MobileMail <0798395dde43ca46317db6e674dfbbfd>  503 (jettisoned) 
MobilePhone <82c9bd8583f4b09706a16b08e641a4b9>  464 (jettisoned) 
    notifyd <d6b12a4e424e10e5ce91efd8d39f22af>  77 
    BTServer <c940c4c7252113a7303cc1f7d1429c17>  253 
    CommCenter <b1d6c4fe3ce2bc0374471196ab15b8d4>  313 
SpringBoard <c5c29b56a2bb445fc73203e03f67fa78> 1954 (active) 
    accessoryd <32ceed5c3c32625ac23cd870f61364af>  107 
    configd <aae411e8289912124271f109ceee8f85>  290 
    fairplayd <cdce5393153c3d69d23c05de1d492bd4>  156 
    mDNSResponder <db98efaea94329959789f73a16f9f46e>  123 
mediaserverd <612fbbfa0546609cf6c6b13ae6f333cf>  767 (jettisoned) 
    lockdownd <171865bfe3725c3d5047df8c00ed5d77>  294 
    syslogd <1cb3e9f2375fad9e345bd16655be4a50>  66 (jettisoned) 
    launchd <c5bc115d47313218505394f96770782a>  76 

**End** 

Incident Identifier: 8E52889B-0260-4AAD-A39C-FC170FB637D4 
CrashReporter Key: 45d118e8a4be9b3163eab905af870f05dfddb12d 
OS Version:   iPhone OS 3.1.2 (7D11) 
Date:    2010-01-14 13:41:31 -0800 

Free pages:  309 
Wired pages:  12550 
Purgeable pages: 0 
Largest process: iConicCars 

Processes 
     Name     UUID     Count resident pages 
     iConicCars <851d264eb074e465891dcd67b67a8e79> 5641 (jettisoned) (active) 
     SCHelper <b87bd080a670f9512426e8721dc1f03c>  103 
      misd <a41e5d5f4b8922ab272c55df84aec4fd>  140 
    installd <620ede129454bcd824f0b6cec13b15d3>  212 
SpringBoard <c5c29b56a2bb445fc73203e03f67fa78> 1545 (jettisoned) (active) 
     iapd <fea164e93479b90e1dd39a293dd3865c>  251 (jettisoned) 
    syslogd <1cb3e9f2375fad9e345bd16655be4a50>  83 (jettisoned) 
mediaserverd <612fbbfa0546609cf6c6b13ae6f333cf>  302 (jettisoned) 
    BTServer <c940c4c7252113a7303cc1f7d1429c17>  345 
    lockdownd <171865bfe3725c3d5047df8c00ed5d77>  279 
    notifyd <d6b12a4e424e10e5ce91efd8d39f22af>  104 
    CommCenter <b1d6c4fe3ce2bc0374471196ab15b8d4>  151 
    configd <aae411e8289912124271f109ceee8f85>  264 
    fairplayd <cdce5393153c3d69d23c05de1d492bd4>  517 
    mDNSResponder <db98efaea94329959789f73a16f9f46e>  100 
    launchd <c5bc115d47313218505394f96770782a>  67 

**End** 

hanno detto anche dopo il riavvio, non c'è differenza. Ecco il kicker, funziona perfettamente sul mio iPhone 3GS e nel simulatore senza perdite di memoria.

Quindi, che diamine faccio?

UPDATE: [. Sessione iniziata alle 2010-01-16 20:01:44 1300]

di registro per il simulatore GNU gdb 6.3.50-20050815 (Apple versione gdb-1346) (Ven 18 settembre 20:40:51 UTC 2009) Copyright 2004 Free Software Foundation, Inc. GDB è un software gratuito, coperto dalla GNU General Public License, e siete benvenuti a cambiarlo e/o distribuirne copie sotto certe condizioni. Digitare "show copying" per vedere le condizioni. Non c'è assolutamente alcuna garanzia per GDB. Digitare "show warranty" per i dettagli. Questo GDB è stato configurato come "x86_64-apple-darwin" .sharedlibrary applicare-load-governa tutto Collegamento per elaborare 1152. dyld: impossibile caricare la libreria inserita: /usr/lib/libgmalloc.dylib

dati Formattatori temporaneamente non disponibile, riproverà dopo un 'continua'. (Impossibile chiamare il caricatore al momento, è bloccato.) Avviso : Impossibile trovare il simbolo minimo per "_sigtramp" - backtrace potrebbe non essere affidabile Impossibile accedere alla memoria all'indirizzo 0x0 Impossibile accedere alla memoria all'indirizzo 0x0 (gdb)

+0

AGGIORNAMENTO: Ho 2,8 mbs di immagini memorizzate in un array nell'app - sarebbe male? Ho fatto una richiesta e ho avuto una app simile, che usa solo immagini più piccole. –

+0

2,8 MB sul file system (come in JPG size)? Perché una volta caricati sono MOLTO più grandi in memoria. È possibile avere immagini più grandi, ma potrebbe essere necessario rielaborare l'app per caricare le immagini solo se necessario. –

+0

la cartella di immagini sul desktop è di 2,8 mega. –

risposta

5

Come altri hanno già detto, si sta utilizzando troppa memoria.

Se si utilizzano più pagine di controller di visualizzazione, provare questo semplice test - eseguire l'app con ObjectAlloc Instrument. Fai clic su qualcosa per far apparire una sottoview, dovresti vedere aumentare la tua memoria - ora elimina quella vista e torna a quella principale, la memoria dovrebbe andare giù. Se non lo fa, questo è il tuo problema (o uno di loro comunque, ma questo è un punto di partenza simpatico).

Per cercare di rintracciare questo, posizionare i punti di interruzione in dealloc per ciascuno dei controller della vista e vedere cosa viene effettivamente chiamato.Per i controller di visualizzazione che non sono stati rilasciati come previsto, in ObjectAlloc è possibile visualizzare la posizione in cui ogni elemento di ritenzione è stato emesso e decidere cosa ha trattenuto l'oggetto quando non avrebbe dovuto farlo.

In generale, il flusso ObjectAlloc dovrebbe assomigliare ad un grafico che va su e giù per tutto il tempo, non è in costante aumento.

anche se si utilizza un sacco di immagini li considerano ridimensionamento al formato esatto avete bisogno invece di partire con una dimensione molto più grande e il ridimensionamento. L'utilizzo di quella quantità di memoria deve essere dovuta all'utilizzo di immagini e non al loro rilascio. Le perdite non segnalano nulla se hai ancora riferimenti alla memoria che stai conservando.

Inoltre, acquistare un tocco più vecchio per il test.

+0

"Inoltre, se si utilizzano molte immagini, è consigliabile ridimensionarle alla dimensione esatta necessaria invece di iniziare con una dimensione e un ridimensionamento molto più grandi." penso che potrebbe essere il problema .. leggi il commento sulla domanda che ho appena scritto. –

+0

Ho commentato questo. Non c'è davvero alcun motivo per cui dovresti averli caricati tutti, dovresti davvero cambiarlo per caricare solo le immagini quando ne hai bisogno, e sbarazzarti di quelle che non stai utilizzando. –

+0

Consiglierei comunque di provare un tocco per provarlo ... anche se scommetto che è stato di grande aiuto. Sono contento che questo sia il problema principale. –

3

L'app ha utilizzato troppa memoria. Controlla la tua app con strumenti (Allocazione oggetti o perdite) e verifica se è possibile ridurre l'allocazione della memoria.

+0

quali sono i modi migliori per ridurre le allocazioni di memoria? ed è meglio lasciare che il sistema di gestirlo (NSString * string = @ "ciao";) o fai da te come (NSString * string = [[alloc NSString] init];) –

+0

Per le stringhe, 'NSString * const string = @ "ciao"; 'se possibile. Se lo fai tu stesso ricordati di "-release' it. – kennytm

2

L'app sta utilizzando molta, troppa memoria. Non funzionerà mai su dispositivi più vecchi con 128 MB di RAM.

+1

puoi semplicemente specificare che è necessario un dispositivo più recente per eseguirlo? diventeranno sempre più veloci. –

+0

Volete davvero eliminare 10-20 milioni di persone dalla corsa per acquistare la vostra applicazione quando si potrebbe semplicemente trascorrere un po 'di tempo per ottimizzare e farlo funzionare per tutti? Per un gioco potrei FORSE vedere questo argomento se volessi usare solo le ultime funzionalità di OpenGL. –

+0

nah .. proverò a ottimizzarlo. –

5

Vedere "pagine libere: 309"? non va bene, significa che stai usando un mucchio di memoria, quindi quando è tutto usato si blocca. E le pagine purgeable = 0 è la memoria che non può essere reclamata quindi è un problema di memoria.

Esegui un "Build and Analyze" ed esegui "Leaks" per trovare perdite di memoria e posizioni che puoi eseguire in modo più efficiente.

+0

Non ho perdite. La memoria ALl sembra essere/contabilizzata/per. –

3

Il tuo iPhone 3GS e il Simulatore hanno molta più memoria rispetto agli altri dispositivi del sistema operativo iPhone. Per lavorare su tutti i dispositivi, non utilizzare più di 20 MB di memoria.

+0

come si dice se quanto sta usando ora? –

+0

Hai provato a eseguire le app in Strumenti (Esegui -> Esegui con gli strumenti Prestazioni ...) – kennytm

+0

sì, ho. e pensa che mi sembra ok. (anche se questo non significa molto) –

Problemi correlati