rapports instrument fuite pour cette simple utilisation de NSURLConnection:Avec proxy, les fuites NSURLConnection pour les URL https
#import <Foundation/Foundation.h>
int main (int argc, char ** argv)
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSURLRequest *theRequest = [NSURLRequest
requestWithURL:[NSURL URLWithString:@"https://gmail.com/"]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60.0];
[NSURLConnection connectionWithRequest:theRequest delegate:nil];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[pool drain];
[NSThread sleepForTimeInterval:10]; // wait for Instruments to check
}
fuite trace de la pile:
0 CoreFoundation __CFBasicHashRehash
1 CoreFoundation CFDictionaryCreate
2 CFNetwork _getConnectionInfoForProxy
3 CFNetwork HTTPProtocol::createStream()
4 CFNetwork HTTPProtocol::createAndOpenStream()
5 CFNetwork executionContextPerform(void*)
6 CoreFoundation __CFRunLoopDoSources0
7 CoreFoundation __CFRunLoopRun
8 CoreFoundation CFRunLoopRunSpecific
9 CoreFoundation CFRunLoopRunInMode
10 Foundation +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:]
11 Foundation -[NSThread main]
12 Foundation __NSThread__main__
13 libSystem.B.dylib _pthread_start
14 libSystem.B.dylib thread_start
Il ne fuit pas si l'URL est tout à fait normal http et il ne redirige pas vers un site https.
Comment réparer la fuite? J'utilise Snow Leopard et j'ai des proxies pour http et https.
Peu importe le temps que je donne à la boucle d'exécution. Il fuit toujours. –
@davidlin donc? * vous * n'avez rien fait de mal, donc la fuite (si c'est une vraie fuite) n'est pas votre problème et peut être corrigé dans un prochain système mis à jour. essayer de coder autour maintenant serait un casse-tête et pourrait casser votre code à l'avenir quand il peut (ou ne peut pas) être réparé. –
@davidlin aussi, j'ai couru le code que vous avez fourni ci-dessus et Instruments n'a pas signalé une fuite. –