J'ai trouvé une fuite dans mon code où l'archivage et le désarchivage d'un NSURLResponse causait une fuite, et je n'arrive pas à comprendre pourquoi. Instruments signale une fuite lorsque je désarchive la réponse NSURLResponse. Si je commente cela et ne l'utilise pas, il n'y a pas de fuite. Ce qui était intéressant était la place que je sauvé les pièces du NSURLResponse il n'y a pas de fuite:Pourquoi ma mémoire NSURLResponse fuit-elle lorsqu'elle est archivée?
// Encode:
[archiver encodeObject:[response URL] forKey:@"URL"];
[archiver encodeObject:[response MIMEType] forKey:@"MIMEType"];
[archiver encodeObject:[NSNumber numberWithLongLong:[response expectedContentLength]] forKey:@"expectedContentLength"];
[archiver encodeObject:[response textEncodingName] forKey:@"textEncodingName"];
// Decode:
NSURL *url = [unarchiver decodeObjectForKey:@"URL"];
NSString *mimeType = [unarchiver decodeObjectForIKey:@"MIMEType"];
NSNumber *expectedContentLength = [unarchiver decodeObjectForKey:@"expectedContentLength"];
NSString *textEncodingName = [unarchiver decodeObjectForKey:@"textEncodingName"];
NSURLResponse* response = [[NSHTTPURLResponse alloc] initWithURL:url MIMEType:mimeType expectedContentLength:[expectedContentLength longLongValue] textEncodingName:textEncodingName];
Quelqu'un sait pourquoi il en est? Y a-t-il un bug avec l'archivage de NSURLResponse ou est-ce que je fais quelque chose de mal?
Ce code existe réellement, sous la // version, nettoyer la section des objets. Je ne l'ai pas fourni pour mettre davantage l'accent sur l'endroit exact qui cause des fuites, mais je suppose que cela cause plus de confusion. Comme je l'ai dit, si je commente la ligne de code particulière, les instruments signalent des fuites nulles - l'analyseur statique ne se plaint pas non plus des fuites simples que cela. Je libère tous les objets que je pose ma question. –