诊断错误:“释放发送到解除分配的对象”

时间:2011-04-25 04:31:00

标签: objective-c cocoa-touch ios cfstring

我收到了以下错误消息:

message [CFString release] sent to deallocated object at 0x........

我怎么知道哪个字符串导致了这个问题?我可以找出使用调试器的CFString吗?

3 个答案:

答案 0 :(得分:3)

如果您使用的是XCode 4,请使用Zombie乐器(Build and Profile)。出现此消息时,您可以按箭头以获取保留和释放字符串的所有位置的列表。

答案 1 :(得分:1)

请参阅http://www.cocoadev.com/index.pl?NSZombieEnabled以放入断点并查看堆栈以查找发生的发布语句。

答案 2 :(得分:-1)

在第一步,您可以尝试查找您的代码以获取alloc / dealloc函数,并对其进行计数 它一直是“ count alloc == count dealloc ” 第二步,寻找一些结构:

NSString *myString = [NSString stringWith...]; // Auto alloc/init with content
[myString release]; // Release before use
NSLog(@"%@", myString); // Use after release

或尝试使用NSLog(%"retain count :%d", [myString retainCount]);

进行调试