2010-07-23 76 views
0

消息我縮小了這個錯誤(這崩潰我的應用程序):iPhone:發送到釋放實例錯誤

-[NSConcreteMutableData release]: message sent to deallocated instance 0x6eaed40 

下面的代碼:

emailData = [kmlDoc dataUsingEncoding:NSUTF8StringEncoding]; 

不過,我想不通爲什麼這個錯誤正在導致?該行只是將一個非常大的字符串設置爲一個NSData對象。我在dealloc方法中釋放emailData。

這裏怎麼回事?

+0

好吧,它看起來像從dealloc方法中刪除emailData修復了這個問題。但爲什麼? NSData autorelease? – 2010-07-23 22:02:24

回答

9

你需要採取的對象的所有權:

emailData = [[kmlDoc dataUsingEncoding:NSUTF8StringEncoding] retain]; 

或者使用保留/複製屬性:

self.emailData = [kmlDoc dataUsingEncoding:NSUTF8StringEncoding]; 

請記住,你明確必須採取所有權返回的對象從包含既不方法new,alloc,retaincopy,因爲它們返回自動發佈的實例。

查看Memory Management Guide瞭解更多信息。

+0

感謝您解決這個問題。我用self.emailData,它解決了我的問題。 – 2010-07-23 22:12:02

相關問題