私は非常にイライラする問題を抱えています。
NSArray をデコードした後に NSKeyedUnarchiver オブジェクトを解放しようとすると、「EXC_BAD_ACCESS」エラーが発生します。
しかし、それを解放したり、他のオブジェクト (NSString など) をデコードしたりしないと、すべてうまくいきます。
私はそれを理解していません...私にとっては、「decodeObjectForKey」メソッドが「decoder」オブジェクトの何かを変更しているように見えます(ただし、常にではありません?!)。デバッガーでは、このメソッドを呼び出した後に変更される唯一の変数は "_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;
}