如何添加NSDebug.h并在iPhone SDK中使用NSZombie

时间:2009-02-11 01:24:41

标签: iphone cocoa cocoa-touch debugging

我想为我的iPhone应用启用NSZombies。

我在线阅读了几篇文章,但我仍然不确定具体的程序。

我知道我必须设置环境变量,我已经完成了:

NSZombieEnabled = YES
NSDebugEnabled = YES
NSDeallocateZombies = NO

我想(我不确定),我必须导入NSDebug.h。 当我在项目中检查Foundation Framework的标题时,没有NSDebug.h。

经过一些研究,我在iPhoneSimulator Foundation Framework中找到了它们。 所以(我不确定这是否正确),我将iPhoneSimualtor Foundation Framework导入到我的项目中。 我注意到文件STILL没有显示在项目窗口中,即使我可以在Finder中找到它。(这是正常行为吗?)。

所以我打开了主要并添加了:

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

我不确定这是否正确。在此之后,我仍然无法让NSZombie工作(除非我误解了它应该做什么) 我期待看到“NSZombie发送一个发布......”的日志。但是我没有看到任何东西

我确信我只是没有做到这一点,一步一步的好一点将不胜感激。 感谢

另外值得注意的是,我也启用了:

NSMallocStacklLogging = YES
MallocStackLoggingNoCompact = YES

3 个答案:

答案 0 :(得分:34)

您是否正确设置了环境变量?分步指南是

  1. 双击Xcode项目的可执行文件组中的可执行文件。
  2. 单击Arguments选项卡。
  3. 在“要在环境中设置的变量:”部分中,创建一个名为“NSZombieEnabled”的变量,并将其值设置为“YES”。
  4. 您不需要#import NSDebug.h

答案 1 :(得分:10)

您不必包含NSDebug.h或导入任何特殊框架以使用NSZombies。基本上,在您的环境变量中打开它们,然后,如果您尝试向dealloc'd对象发送消息,那么您将在控制台中看到一些内容,如下所示:

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

答案 2 :(得分:3)

-1到Apple。调试版本应该使用开箱即用的完整工具运行(可以选择退出)。另请参阅http://www.cocoadev.com/index.pl?NSZombieEnabled以获取正在开发和调试程序的人员感兴趣的其他内容。