我有内存泄漏问题,我使用以下方法将数组保存到文件中:
[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导致内存泄漏。
我没有太多搜索,我只是找到了内存泄漏的原因,但我一直在寻找已经通过相同问题的人并且有一个解决它的提示。:)
谢谢!! 安娜
答案 0 :(得分:-1)
您保留 initWithCoder 中的对象,尽管文档说明:
然而,NSKeyedUnarchiver的实现返回一个自动释放的对象,因此它的生命与当前的自动释放池相同,而不是键控的unarchiver。