J'ai un problème très frustrant.
Lorsque j'essaie de libérer l'objet NSKeyedUnarchiver après le décodage d'un NSArray, une erreur «EXC_BAD_ACCESS» se produit.
Mais quand je ne le libère pas ou ne décode pas d'autre objet (par exemple NSString) tout va bien.
Je ne comprends pas ... Pour moi, il semble que la méthode "decodeObjectForKey" change quelque chose dans l'objet "décodeur" (mais pas toujours?!). Et dans le débogueur, la seule variable qui change après l'appel de cette méthode est "_replacementMap". Mais je n'ai aucune idée de comment réparer ce bug.
J'espère que vous pouvez m'aider.
est un exemple de code ici:NSKeyedUnarchiver se bloque après le décodage d'un tableau
+ (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;
}
Vous devez montrer deux choses supplémentaires: le code où vous utilisez votre méthode 'decodeArticles' et la trace de la pile de ce crash. –