Здравствуйте, еще один глупый вопрос, касающийся утечек, а также NSURLConnection.Как мне выпустить это?Достаточно ли этого, если я выпущу следующие 2 метода?
(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
(void)connectionDidFinishLoading:(NSURLConnection *)connection
Потому что в инструментах он показывает мне строку, где я выделяю свое соединение как источник утечки.
(РЕДАКТИРОВАТЬ1: ОК, я не понимаю. После следующего кода мойurlConnection имеет счет сохранения 2. WTF?)
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest: urlRequest delegate: self];
Это строка, на которую указывают мне инструменты.
EDIT2: вот некоторый код:
Iсоздайте соединение здесь
- (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;
}
Я освобождаю его здесь
-(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;
}
Или здесь
-(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];
.....
.....
}
РЕДАКТИРОВАТЬ3: Проблема решена, не заботясь о том, протекает она или нет!Простой!