2010-11-02 12 views
26

Mam trudności z naprawieniem problemów związanych z pamięcią w mojej aplikacji na iPada, ale dobrze, że dzięki temu dowiedziałem się o "migawkach". Złe jest to, że nadal nie jestem w stanie zrozumieć, co oznaczają niektóre z dostarczonych mi informacji. alt textCo oznacza <non-object> w alokacji "migawki"?

Co to są te nieobiekty, które wciąż żyją i zabierają większość pamięci opisanej w Heap Growth? Czy można się ich pozbyć? Wygląda na to, że większość z nich jest związana z różnymi operacjami rysowania, CALayerem, kontekstem i itp. (Kategoria: "Malloc" lub "Realloc"). W razie potrzeby mogę podać więcej szczegółów.

Odpowiedz

20

Oznacza to, że blok pamięci został przydzielony nie dla obiektu (np. Czystej struktury c). Zazwyczaj są one przydzielane przez systemowy kod struktury, więc istnieją pewne inne obiekty, które przeciekają. Na przykład. jeśli zapomnisz zwolnić UIView, to jego warstwa również nie zostanie zwolniona.

Możesz otworzyć panel "Rozszerzone szczegóły" (patrz menu "Widok") i przeanalizować stos wywołań. Należy pamiętać, że zapomniałeś o tym, że zapomniałeś o wielu wyciekach pamięci, więc spróbuj naprawić najłatwiejsze wycieki, a następnie sprawdź, czy inne wycieki znikają.

Jeszcze jedna sztuczka. Możesz wyłączyć blok funkcjonalny aplikacji jeden po drugim i sprawdzić, czy wycieki znikają. Dzięki temu będziesz mógł zlokalizować moduł (klasę, blok funkcjonalny itp.), W którym występuje.