2010-04-14 47 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