我有一个非常令人沮丧的问题。
当我在解码 NSArray 后尝试释放 NSKeyedUnarchiver 对象时,会出现“EXC_BAD_ACCESS”错误。
但是当我不释放它或解码其他对象(例如 NSString)时,一切都很顺利。
我不明白......对我来说,看起来“decodeObjectForKey”方法改变了“解码器”对象中的某些内容(但并非总是如此?!)。而在调试器中,调用此方法后唯一改变的变量是“_replacementMap”。但我不知道如何修复这个错误。
我希望你能帮助我。
这是示例代码:
+ (NSArray *)decodeArticles {
NSString *archivePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"Articles.archive"];
NSData *decoderData = [[NSData alloc] initWithContentsOfFile:archivePath];
NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:decoderData];
NSArray *savedArticles = [[decoder decodeObjectForKey:@"articles"] copy];
if (!savedArticles) {
savedArticles = [[NSArray alloc] init];
}
[decoder finishDecoding];
//[decoder release];
return savedArticles;
}