Jak skonfigurować NSZombieEnabled
i CFZombieLevel
dla mojego pliku wykonywalnego w Xcode 4?
objective-c
xcode
xcode4
nszombie
Chetan
źródło
źródło
Odpowiedzi:
W Xcode 4.x naciśnij
⌥⌘R
(lub kliknij
Menubar
>Product
>Scheme
>Edit Scheme
)wybierz kartę „Diagnostyka” i kliknij „Włącz obiekty zombie”:
Powoduje to, że uwolnione obiekty stają się instancjami NSZombie, które po ponownym użyciu drukują ostrzeżenia konsoli. Jest to pomoc w debugowaniu, która zwiększa wykorzystanie pamięci (żaden obiekt nie jest tak naprawdę uwalniany), ale poprawia raportowanie błędów.
Typowym przypadkiem jest nadmierne zwolnienie obiektu i nie wiadomo, który z nich:
-[UITableView release]: message sent to deallocated instance
To ustawienie Xcode jest ignorowane podczas archiwizowania aplikacji do przesłania do App Store. Nie musisz nic dotykać przed zwolnieniem aplikacji.
Naciśnięcie ⌥⌘Rjest takie samo, jak wybranie opcji Produkt> Uruchom przy jednoczesnym przytrzymaniu Altklawisza.
Kliknięcie pola wyboru „Włącz obiekty zombie” jest takie samo, jak ręczne dodanie „NSZombieEnabled = TAK” w sekcji „Zmienne środowiskowe” na karcie Argumenty.
źródło
CMD-<
(CMD-SHIFT-comma
) lubProduct -> Scheme -> Edit SCheme...
Odpowiedź Jano jest najłatwiejszym sposobem na znalezienie tego. Innym sposobem byłoby kliknięcie rozwijanego paska schematu -> edycja schematu -> zakładka argumenty, a następnie dodanie NSZombieEnabled w kolumnie Zmienne środowiskowe i TAK w kolumnie wartości ...
źródło
Uważam tę alternatywę za wygodniejszą:
Profile
Zombies
Gdy tylko zostanie wykryty zombie, otrzymasz zgrabny „stos zombie”, który pokazuje, kiedy przedmiot został przydzielony i gdzie został zachowany lub zwolniony:
Zalety w porównaniu do korzystania z karty diagnostycznej schematów Xcode :
Jeśli zapomnisz odznaczyć opcję na karcie diagnostycznej, żadne obiekty nie zostaną zwolnione z pamięci.
Otrzymasz bardziej szczegółowy stos, który pokazuje, w jaki sposób uszkodzony obiekt został przydzielony / zwolniony lub zatrzymany.
źródło
iOS Simulator > All
z głównej listy szablonów (możesz to zrobić tylko w symulatorze)W Xcode 4.2
źródło
Włącz w Xcode 7
⌘<
lub wybierz
Edit Scheme
zProduct
>Scheme
Menuwybierz
Enable Zombie Objects
zDiagnostics
zakładkiAlternatywnie, jeśli wolisz
.xcconfig
pliki, możesz przeczytać ten artykuł https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/źródło
Kakao oferuje fajną funkcję, która znacznie zwiększa twoje możliwości debugowania takich sytuacji. Jest to zmienna środowiskowa o nazwie NSZombieEnabled, obejrzyj ten film wyjaśniający konfigurację NSZombieEnabled w celu-C
źródło
W Xcode> 4.3:
Kliknij rozwijany pasek schematu -> edytuj schemat -> kartę argumentów, a następnie dodaj NSZombieEnabled w kolumnie Zmienne środowiskowe i YES w kolumnie wartości.
Powodzenia !!!
źródło