2010-04-14 89 views
0

在我的iPhone应用程序我得到:FREED(id):释放释放对象错误解决方案的消息释放?

objc[597]: FREED(id): message release sent to freed object=0x3b81780 

error.What应该引起这个错误是关于内存分配?我有UITable和模型视图,其中包括一些文本字段。它从模型视图中获取用户名,并在互联网上搜索并从互联网获取一些图像。它需要数据,但是当模型视图消失应用程序出口并给出该错误。当模型视图关闭它运行我的方法并获得价值,但它从应用程序退出。

回答

2

基本上你试图做这样的事情:

AnObject * anObject = [[AnObject alloc] init]; 
[anObject doSomething]; 
[anObject release]; 
[anObject doSomethingElse]; 

当调用-release,对象被释放(因为它只有一个+1保留计数),这意味着你的doSomethingElse消息正被发送到不再存在的对象。您可以使用Instruments中的“Zombies”工具运行您的应用程序,以帮助进一步调试。

+0

+1。在这种情况下'doSomethingElse' =='释放'? (“消息*发布*发送释放...”) – zoul 2010-04-14 17:39:26

+1

zoul:是的。某处,你第二次释放该对象。如果你没有明确调用'release'两次,那么这个对象可能会被自动释放。当你使用Foundation类的便利方法时,这很可能发生,比如'stringWithFormat:' - 基本上,如果你有对象,并且没有'alloc'或'copy',那么它很可能是自动释放的您。 – 2010-04-14 17:43:07

+0

我查看了我的程序并忽略了所有版本,但它也给出了同样的错误。 – Ercan 2010-04-14 18:33:16