2010-07-23 73 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

相关问题