/ / O jogo para iPhone está falhando após o aviso de memória com a mensagem “Data Formatters indisponível temporariamente, tentará novamente após um 'continuar'” - iphone, objetivo-c, toque de cacau, gerenciamento de memória

jogo do iPhone está falhando após o aviso de memória com a mensagem "Data Formatters temporariamente indisponíveis, vai voltar a tentar depois de um 'continuar'" - iphone, objetivo-c, cacau-toque, gerenciamento de memória

Estou na fase final de desenvolvimento de um jogo para iPhone e estou lidando com uma falha que parece estar relacionada à memória.

Isso acontece apenas no dispositivo quando eu carrego um jogonível várias vezes (10 a 15 vezes). Recebo alguns avisos de memória pela 8ª vez e, se continuar carregando o mesmo nível, ele finalmente trava com esta mensagem no console:

Program received signal:  “0”.
Data Formatters temporarily unavailable, will re-try after a "continue". (Unknown error loading shared library
"/Developer/usr/lib/libXcodeDebuggerSupport.dylib")

Algumas pesquisas no Goolge me disseram que essa mensagem geralmente significa que o aplicativo ficou sem memória.

Eu executei o aplicativo em instrumentos, mas ele nãodetectar qualquer vazamento de memória e a alocação total permaneceu em torno de 1,5 Mb (bytes ativos e globais) atingindo 5,4 Mb por uma fração de segundo sempre que carregava um nível. Isso não parece muito, já que um aplicativo de teste com vazamento não falha antes de alocar mais de 30 Mb no mesmo dispositivo (iPhone 3GS). Eu sou novo em instrumentos, então talvez esteja faltando alguma coisa.

Estou lutando com esse bug há dias e ficaria muito agradecido se alguém pudesse me apontar na direção certa.

Respostas:

0 para resposta № 1

Verifique em Instrumentos o Monitor de Atividadesinstrumento. Você encontrará a quantidade correta de RAM que está consumindo a qualquer momento. O instrumento Alocações não é realmente um indicador do uso da RAM. No entanto, ajudará a encontrar itens que foram alocados e não liberados. Use imagens instantâneas em Alocações para encontrar onde as coisas estão vazando.

http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/


0 para resposta № 2

Sim, sua pesquisa estava certa "essa mensagem geralmente significa que o aplicativo ficou sem memória" Por favor, leia a documentação de gerenciamento de memóriada apple e libere seus objetos adequadamente se houver vazamentos de memória. Isso reduzirá os avisos de memória e o código funcionará bem. Ao alocar objetos simultaneamente ao carregar um novo nível, ele indiretamente pressupõe a alocação de objetos, mas você não pode delloc corretamente, significa que você está criando nova memória para o novo objeto, mas o objeto antigo ainda está na memória. Após esse cenário, por que você não recebeu um aviso de memória?