消息发送到解除分配的实例0x1edf5720

时间:2013-05-29 05:12:59

标签: iphone memory-leaks

当应用崩溃时,我在日志中收到以下消息

*** -[CFString release]: message sent to deallocated instance 0x1edf5720
[Switching to process 9223 thread 0x2407]
[Switching to process 9223 thread 0x2407]
[unknown][unknown][unknown][unknown][unknown][unknown][unknown][unknown][unknown][unknown](gdb)

我的问题非常简单,我只想知道哪一个是解除分配的实例0x1edf5720 。 我只是想知道是否有任何工具或某种方法可以让我知道 0x1edf5720 指的是哪个对象或Zombie创建的位置。请注意,我不能使用模拟器进行测试。我必须在设备上测试它。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我认为你发布了NSString而没有分配它。

只有在分配值时才需要发布。

例如:

NSString * tempString=[[NSString alloc]init]; 

现在[tempString release];有效。

如果NSString * tempString=[NSString string];NSString * tempString=@"";

现在[tempString release];无效。

答案 1 :(得分:0)

这有一个原因来自于崩溃应用程序的两个选项。

1。您没有分配NSStringrelease的变量。

2。你已经分配了autorelease,但是如下所示......

   [[[NSString alloc] init] autorelease]; //Remove autorelease from here if you allocated with this keyword

使用NSZombieEnabled请参阅教程,了解相关内容NSZombieEnabled-iPhone