Jak skonfigurować NSZombieEnabled w Xcode 4?

Jak skonfigurować NSZombieEnabled i CFZombieLevel dla mojego pliku wykonywalnego w Xcode 4?

Author: Besi, 2010-02-03

7 answers

W Xcode 4.X press

R

(lub kliknij Menubar > Product > Scheme > Edit Scheme)

Wybierz zakładkę "Diagnostyka" i kliknij "Włącz Obiekty Zombie":

Kliknij " Włącz Obiekty Zombie"

To zamienia zwolnione obiekty w instancje NSZombie, które wypisują Ostrzeżenia konsoli po ponownym użyciu. Jest to pomoc debugowania, która zwiększa zużycie pamięci (żaden obiekt nie jest tak naprawdę zwolniony), ale poprawia raportowanie błędów.

Typowy przypadek polega na tym, że obiekt i nie wiesz który:

  • Z Zombie: -[UITableView release]: message sent to deallocated instance
  • BEZ Zombie: EXC_BAD_ACCESS

To ustawienie Xcode jest ignorowane podczas archiwizacji aplikacji do przesyłania w sklepie App Store. Nie musisz niczego dotykać przed zwolnieniem aplikacji.

Naciśnięcie ⌥ ⌘R jest takie samo jak wybranie opcji product > Run Przy wciśnięciu klawisza Alt.
Kliknięcie pola wyboru" Włącz Obiekty Zombie "jest takie samo jak ręczne dodawanie" NSZombieEnabled = YES "w sekcji" zmienne środowiskowe " tabulatorów.

 752
Author: Jano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-07 18:39:17

Odpowiedź Jano jest najprostszym sposobem, aby ją znaleźć.. innym sposobem byłoby kliknięcie na rozwijanym pasku scheme - > edytuj scheme - > arguments, a następnie dodanie NSZombieEnabled w kolumnie zmiennych środowiskowych i YES w kolumnie value...

 70
Author: learner2010,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-16 14:22:13

Uważam tę alternatywę za wygodniejszą:

  1. Kliknij rozwijane menu "Uruchom przycisk"
  2. z listy wybierz Profile
  3. program" Instrumenty " powinien się otworzyć, gdzie można również wybrać Zombies
  4. Teraz możesz wchodzić w interakcje z aplikacją i próbować spowodować błąd
  5. Jak tylko wystąpi błąd, powinieneś otrzymać podpowiedź, kiedy twój obiekt został zwolniony, a tym samym dealokowany.

Zombie

Jak tylko zombie zostanie wykryty, otrzymasz porządny "Stos Zombie", który pokazuje, kiedy dany obiekt został przydzielony i gdzie został zachowany lub zwolniony: {]}

Event Type    RefCt     Responsible Caller
Malloc            1     -[MyViewController loadData:]
Retain            2     -[MyDataManager initWithBaseURL:]
Release           1     -[MyDataManager initWithBaseURL:]
Release           0     -[MyViewController loadData:]
Zombie           -1     -[MyService prepareURLReuqest]

Zalety w porównaniu do korzystania z karty diagnostycznej schematów Xcode :

  1. Jeśli zapomnisz odznaczyć opcję na karcie Diagnostyka, żadne obiekty nie zostaną zwolnione z pamięci.

  2. Otrzymasz bardziej szczegółowy stos, który pokazuje, w jakich metodach uszkodzony obiekt został przydzielony / zwolniony lub zachowany.

 57
Author: Besi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-04 00:56:27

In Xcode 4.2

  • Nazwa Projektu / Edycja Schematu / Diagnostyka /
  • Włącz pole wyboru obiektów Zombie
  • You ' re done
 5
Author: pratap shaik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-23 03:04:13

On In Xcode 7

Lub wybierz Edit Scheme z Product > Scheme Menu

Wybierz Enable Zombie Objects z zakładki Diagnostics

Xcode 7 zombie flag

Jako alternatywę, 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/

 3
Author: IgnazioC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-20 06:50:01

Cocoa oferuje fajną funkcję, która znacznie zwiększa możliwości debugowania takich sytuacji. Jest to zmienna środowiskowa o nazwie NSZombieEnabled, obejrzyj ten film wyjaśniający konfigurację NSZombieEnabled w objective-C

 1
Author: user2554822,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-22 04:41:08

In Xcode > 4.3:

Klikasz na rozwijanym pasku scheme -> edytuj scheme - > arguments, a następnie dodajesz NSZombieEnabled w kolumnie zmienne środowiskowe i YES w kolumnie value.

Powodzenia !!!

 -1
Author: Dipak Narigara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-16 20:02:32