/ / iPhone gra zawiesza się po ostrzeżeniu pamięci z komunikatem „Formatowanie danych chwilowo niedostępne, spróbuje ponownie po„ kontynuuj ”

Gra iPhone ulega awarii po ostrzeżeniu o pamięci z komunikatem "Formaty danych tymczasowo niedostępne, zostanie ponownie wypróbowana po" kontynuacji "- iphone, cel-c, dotyk kakao, zarządzanie pamięcią

Jestem w końcowej fazie tworzenia gry na iPhone'a i mam do czynienia z awarią, która wydaje się być związana z pamięcią.

Zdarza się to tylko na urządzeniu, gdy ładuję grępoziom kilka razy (10 do 15 razy). Mniej więcej po raz ósmy dostaję ostrzeżenia o zapamiętywaniu i jeśli będę ładował ten sam poziom, w końcu zawiesza się ten komunikat na konsoli:

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

Niektóre wyszukiwania goolge powiedziały mi, że ta wiadomość zazwyczaj oznacza, że ​​w aplikacji zabrakło pamięci.

Uruchomiłem aplikację na instrumentach, ale niewykrywa wszelkie wycieki pamięci, a całkowita alokacja pozostała na poziomie około 1,5 MB (zarówno na żywo, jak i na ogół bajtów), osiągając 5,4 Mb na ułamek sekundy za każdym razem, gdy ładowałem poziom. Nie wydaje się to zbyt wiele, ponieważ nieszczelna aplikacja testowa nie uległa awarii przed przydzieleniem więcej niż 30 MB na tym samym urządzeniu (iPhone 3GS). Jestem nowy na instrumentach, więc może coś mi brakuje.

Od wielu lat zmagam się z tym błędem i byłbym naprawdę wdzięczny, gdyby ktoś wskazał mi właściwy kierunek.

Odpowiedzi:

0 dla odpowiedzi № 1

Sprawdź w instrumencie monitor aktywnościinstrument. Znajdziesz odpowiednią ilość pamięci RAM, którą zużywasz w danym momencie. Instrument alokacji nie jest tak naprawdę wskaźnikiem wykorzystania pamięci RAM. Pomoże to jednak w znalezieniu rzeczy, które zostały przydzielone i nie zostały zwolnione. gdzie przeciekają rzeczy.

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


0 dla odpowiedzi nr 2

Tak, twoje poszukiwania miały rację ”ta wiadomość zazwyczaj oznacza, że ​​w aplikacji zabrakło pamięci„ Przeczytaj dokumentację zarządzania pamięciąz jabłkiem i odpowiednio wypuść swoje obiekty, jeśli dostaniesz przecieki pamięci. Zmniejszy to ostrzeżenia dotyczące pamięci, a twój kod będzie działać dobrze. Przy jednoczesnym przydzielaniu obiektów, gdy ładowanie nowego poziomu spowoduje pośrednie zaalokowanie obiektów, ale nie będziesz w stanie poprawnie delloc, oznacza to, że tworzysz nową pamięć dla nowego obiektu, ale wciąż stary obiekt znajduje się w pamięci. Po tym scenariuszu dlaczego nie otrzymałeś ostrzeżenia o pamięci?