Jestem całkiem nowy w iPhone Development i mam kłopoty z zarządzaniem pamięcią.
Zbudowałem aplikację Multiview o tej strukturze:
Menu główne - Preferencje - Podgląd z elementem UIPicker.
Nawigacja odbywa się za pomocą kontrolera nawigacji (widok Push / Pop do / ze stosu).
Wszystko dziala. Ale jeśli przełączę się około 20 razy z Preferencji na Subview z UIPicker, program ulegnie awarii.
Czasami dostaję taki komunikat:
objc [5817]: FREED (id): wydanie komunikatu wysłane do uwolnionego obiektu = 0x3d53390
Problem polega na tym, że nie wiem, gdzie jest problem.
Czy istnieje jakaś możliwość uzyskania rozszerzonych informacji, aby zobaczyć, który obiekt spowodował awarię?
Odpowiedzi:
1 dla odpowiedzi № 1Możesz opublikować kod, aby sprawdzić, czy ktoś może wykryć, gdzie znajduje się Twój błąd, ale odpowiedzieć na twoje pytanie:
Możesz włączyć Zombie
Co możesz zrobić, to włączyć zombie w swoimDzięki temu, gdy obiekt zostanie zwolniony, zamiast uwolnić pamięć, zostaje on zapisany z typem obiektu, jakim był. Następnie aplikacja ulega awarii, gdy ta pamięć zostanie ponownie dotknięta, informując, gdzie została dotknięta po raz pierwszy, kiedy nie powinna być, i jaki to był obiekt.
Upewnij się, kiedy skończysz, aby wyłączyć zombie, ponieważ zużywa tak dużo pamięci.
0 dla odpowiedzi nr 2
W moim przypadku zachowuję obiekt przy inicjalizacji i zwalniam, gdy go już nie potrzebuję.
JEŚLI potrzebujesz więcej szczegółów, profesjonalne rozwiązanie, spójrz na Podręcznik programowania zarządzania pamięcią dla kakao