У меня очень неприятная проблема.
Когда я пытаюсь освободить объект NSKeyedUnarchiver после декодирования NSArray, возникает ошибка «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;
}