当应用崩溃时,我在日志中收到以下消息
*** -[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创建的位置。请注意,我不能使用模拟器进行测试。我必须在设备上测试它。
提前致谢。
答案 0 :(得分:0)
我认为你发布了NSString
而没有分配它。
只有在分配值时才需要发布。
例如:
NSString * tempString=[[NSString alloc]init];
现在[tempString release];
有效。
如果NSString * tempString=[NSString string];
或NSString * tempString=@"";
现在[tempString release];
无效。
答案 1 :(得分:0)
这有一个原因来自于崩溃应用程序的两个选项。
1。您没有分配NSString
和release
的变量。
或强>
2。你已经分配了autorelease
,但是如下所示......
[[[NSString alloc] init] autorelease]; //Remove autorelease from here if you allocated with this keyword
使用NSZombieEnabled
请参阅教程,了解相关内容NSZombieEnabled-iPhone