Как добавить NSDebug.h и использовать NSZombie в iPhone SDK - PullRequest
15 голосов
/ 11 февраля 2009

Я хочу включить NSZombies для моего приложения для iPhone.

Я прочитал несколько статей в Интернете и до сих пор не уверен в точной процедуре.

Я знаю, что должен установить переменные среды, что я и сделал:

NSZombieEnabled = YES
NSDebugEnabled = YES
NSDeallocateZombies = NO

Я думаю (я не уверен), я должен импортировать NSDebug.h. Когда я проверяю заголовки Foundation Framework в моем проекте, NSDebug.h отсутствует.

После некоторых исследований я нашел их в платформе iPhoneSimulator Foundation Framework. Итак (и я не уверен, что это правильно), я импортировал iPhoneSimualtor Foundation Framework в свой проект. Я заметил, что файл STILL не отображается в окне проекта, хотя я могу найти его в Finder. (Это нормальное поведение?).

Итак, я открыл main и добавил:

#ifdef TARGET_IPHONE_SIMULATOR
#import <Foundation/NSDebug.h>
#endif

Я тоже не уверен, правильно ли это. После этого я все еще не могу заставить NSZombie работать (если я не понял, что он должен делать) Я ожидаю увидеть журнал "NSZombie отправил релиз ..." или что-то в этом роде. Но я ничего не вижу

Я уверен, что я просто не делаю это правильно, хороший шаг за шагом был бы оценен. Спасибо

Также обратите внимание, я также включил:

NSMallocStacklLogging = YES
MallocStackLoggingNoCompact = YES

Ответы [ 3 ]

34 голосов
/ 11 февраля 2009

Правильно ли вы устанавливаете переменную среды? Пошаговое руководство:

  1. Дважды щелкните исполняемый файл в группе «Исполняемые файлы» вашего проекта XCode.
  2. Откройте вкладку Аргументы.
  3. В разделе «Переменные для установки в среде:» создайте переменную с именем «NSZombieEnabled» и установите для нее значение «ДА».

Вам не нужно #import NSDebug.h

10 голосов
/ 11 февраля 2009

Вам не нужно включать NSDebug.h или импортировать какие-либо специальные фреймворки, чтобы использовать NSZombies. По сути, включите их в переменных окружения, а затем, если вы попытаетесь отправить сообщение об объекте dealloc, ТОГДА вы увидите что-то в своей консоли, например:

2009-02-10 21:17:08.546 MyApp[16926:20b] *** -[CFString _cfTypeID]: message sent to deallocated instance 0x4babc0

3 голосов
/ 10 апреля 2011

-1 для Apple. Отладочные сборки должны быть запущены с полным набором инструментов из коробки (с возможностью отказаться). Также см. http://www.cocoadev.com/index.pl?NSZombieEnabled для получения дополнительных сведений, представляющих интерес для тех, кто разрабатывает и отлаживает программу.

...