Bonjour une autre question stupide concernant les fuites et aussi NSURLConnection. Comment puis-je le libérer? Est-ce suffisant si je libère dans les 2 méthodes suivantes? Parce que dans les instruments, il me montre la ligne où j'ai alloué ma connexion comme source de fuite.NSURLConnection montrée comme une fuite dans les instruments
:
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest: urlRequest delegate: self];
Ceci est la ligne que les instruments me poInts (EDIT1 OK Je ne comprends pas après le code suivant mon URLConnection a conserver le nombre de 2. WTF.?).
EDIT2: voici quelques code:
Je crée la connexion ici
- (void) makeRequest { //NSString *urlEncodedAddress = [self.company.street stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSString *urlString = [[NSString alloc] initWithFormat: @"http://maps.google.com/maps/api/geocode/xml?latlng=%f,%f&sensor=false", bestEffort.coordinate.latitude,bestEffort.coordinate.longitude]; debugLog(@"%@",urlString); NSURL *url = [[NSURL alloc] initWithString: urlString]; [urlString release]; NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL: url]; [url release]; NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest: urlRequest delegate: self]; debugLog(@"connection created %@ rc %i", urlConnection, urlConnection.retainCount); [urlRequest release]; connection = urlConnection; }
je libère ici
-(void)connection:(NSURLConnection *)_connection didFailWithError:(NSError *)error { debugLog(@"ERROR with the connection: %@", error.localizedDescription); //[activityIndicator setHidden:YES]; debugLog(@"connection will be released or else %@ %i", _connection, [_connection retainCount]); [connection release]; connection = nil; [webData release]; webData = nil; if (!cancel) [delegate rgc_failedWithError: self : error]; isWorking = FALSE; }
Ou ici
-(void)connectionDidFinishLoading:(NSURLConnection *)_connection { debugLog(@"connection will be released (or else) %@ %i", _connection, [_connection retainCount]); [connection release]; connection = nil; debugLog(@"DONE. Received Bytes: %d", [webData length]); //NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; //debugLog(@"%@",theXML); //[theXML release]; ..... ..... }
EDIT3: Problème résolu en ne se souciant pas si ça fuit ou pas! Simple!
Si vous publiez du code source, il sera beaucoup plus facile de vous donner une réponse correcte à la question –
Eh bien je fais une connexion, tout de suite il a rc: 2 (!). Avant de libérer dans les gestionnaires d'événements d'erreur ou de succès il a encore 2 rc. –
BTW si je fais une version supplémentaire juste après allocation, il me donne un EXC_BAD_ACCESS dans connectionDidFinishLoading :) –