2012-08-24 8 views
15

Ostatnio przekonwertowałem swój projekt na iOS na ARC. Jeden z kontrolerów widoku nie nazywa swojej metody dealloc i nie jest dealloc'ed zgodnie z Instruments.Jak dowiedzieć się, co zachowuje obiekt w Instrumentach?

Dwa razy sprawdziłem wszystkie moje właściwości i ustawię odpowiednie na słabe. Upewniłem się także, że wszystko, co ma kontroler widoku jako delegata, nie jest ustawione na viewWillDisappear, ale widok nadal pozostaje w pamięci.

Jestem początkującym w Instruments: jak mogę powiedzieć, co zachowuje ten widok?

+0

Umieść komunikat dziennika w viewWillDisappear z typem obiektu i jego wskaźnikiem, a następnie, gdy okaże się, że VC nie został dealloc'd zobaczyć, czy faktycznie uzyskał viewWillDisappear. –

Odpowiedz

27

Dobrze, jeśli jesteś naprawdę zatrzymany, a program jest złożony (lub pobieranej w przypadku SM), można wydobyć armaty:

  • Otwórz projekt Xcode
  • Wybierz plik wykonywalny (w razie potrzeby)
  • Prasa cmd+i (Profile)
  • wybór instrumentu 'przecieki' w Le Wizard (jeśli to konieczne)
  • Naciśnij klawisz Enter, aby rozpocząć profilowania
  • Ćwiczenia aplikacja
  • Naciśnij „STOP” instrumentami
  • Sprawdź instrumentu „przydziały” jest wybrany
  • Kliknij i przytrzymaj przycisk Popup nazwie poz
  • wybrać listę obiektów „statystyki”
  • Zlokalizuj przydział, który cię interesuje, wśród rekordów na liście obiektów
  • Wybierz przydział/obiekt
  • Kliknij strzałkę szczegółów po prawej stronie adresu w komórce widoku tabeli tego allo. kacji
  • Teraz można zobaczyć wszystkie wydarzenia związane z przydziałem (przydział, wolne, operacje licznika odwołań)
  • Prasa cmd+shift+e przez dłuższy Szczegóły
  • Przejście wydarzeń w tej liście, a następnie zlokalizuj nierównowagę szukasz.
+1

Rozszerzona szczegółówka pozwoli ci zobaczyć stos, w jaki sposób pamięć została przydzielona i może dać ci całkiem niezłą wskazówkę, gdzie możesz mieć "malloc", który nie ma odpowiadającego "wolnego". – Gujamin