2009-02-11 56 views
14

我想为我的iPhone应用启用NSZombies。如何添加NSDebug.h并在iPhone SDK中使用NSZombie

我在网上阅读过几篇文章,但我仍然不确定具体的操作步骤。

我知道我必须设置环境变量,这是我做:

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 
+1

最后一个代码块中的`NSMallocStackLogging`上的错字 – conorgriffin 2011-01-22 11:58:27

回答

10

不必包括NSDebug.h或进口任何特别的框架使用NSZombies。基本上,把“时间在你的环境变量,然后,如果你试图消息dealloc'd对象,然后你会看到在您的控制台的东西,沿着线:

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

+0

谢谢,我以为我太累了。 我在 - [NSZombie发布]中设置了一个断点。它在执行开始时似乎被禁用。这是正常的吗? 另外,我的应用程序是否仍然崩溃? 我以为NSZombie对象仍然存在,我的程序会继续执行。 谢谢 – 2009-02-11 04:40:00

+0

当任何消息发送给NSZombie时,你应该得到一个控制台消息;你应该自动断开,不需要断点。 – 2009-02-12 01:03:20

34

是你正确设置环境变量?一步一步的指导是

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

你不需要#IMPORT NSDebug.h

相关问题