NSKeyedUnarchiver导致内存泄漏

时间:2009-11-06 22:49:36

标签: iphone cocoa-touch

我有内存泄漏问题,我使用以下方法将数组保存到文件中:

[NSKeyedArchiver archiveRootObject:myArray toFile:MyFile]; 

数组中包含的对象具有以下方法:

- (id)initWithCoder:(NSCoder *)coder
{

[super init];

parameter1 = [[coder decodeObject] retain];
parameter2 = [[coder decodeObject] retain];
parameter3 = [[coder decodeObject] retain];

return self;
 }

- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:parameter1];
[coder encodeObject:parameter2];
[coder encodeObject:parameter3];
}

取消归档我正在使用的对象:

myUnarchivedArray = [NSKeyedUnarchiver unarchiveObjectWithFile:myFile];

应用程序突然崩溃,因为可用内存不足以继续。

我无法解除分配myUnarchivedArray,而Intruments工具告诉我unarchiver导致内存泄漏。

我没有太多搜索,我只是找到了内存泄漏的原因,但我一直在寻找已经通过相同问题的人并且有一个解决它的提示。:)

谢谢!! 安娜

1 个答案:

答案 0 :(得分:-1)

您保留 initWithCoder 中的对象,尽管文档说明:

然而,

NSKeyedUnarchiver的实现返回一个自动释放的对象,因此它的生命与当前的自动释放池相同,而不是键控的unarchiver。