утечки при использовании NSData, NSURL, NSMutableURLRequest, NSURLConnection и sendSynchronousRequest - PullRequest
1 голос
/ 16 июня 2010

Я получаю утечку в этой строке кода ниже "NSData * returnData = [NSURLConnection ..........."

NSURL * finalURL = [NSURL URLWithString: curl]; NSMutableURLRequest * theRequest = [NSMutableURLRequest requestWithURL: finalURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval: 10]; [theRequest setHTTPMethod: @ "GET"]; NSData * returnData = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: nil ошибка: nil]; BOOL enabled = [self getAutoGenerateObject: returnData]; возврат включен;

пожалуйста, помогите мне выйти из этой проблемы. Благодарю вас, Мадан Мохан

1 Ответ

0 голосов
/ 05 октября 2010

Вам нужно будет разблокировать returnData.Вот почему в примерах Apple в «Руководстве по программированию загрузки URL / Использование NSURLConnection» returnData назначается iVar и освобождается в dealloc или connectionDidFinishLoading в случае асинхронной связи.

В зависимости от того, какую операцию вы выполняете в вашем методе getAutoGeneratedObject, но теоретически он может стать там владельцем.

Вы также можете пометить returnData как автоматически выпущенные, но это не всегда рекомендуется, особенно если данные ответа большие.

NSURL *finalURL = [NSURL URLWithString:curl]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:finalURL 
                                                          cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                                      timeoutInterval:10]; 
[theRequest setHTTPMethod:@"GET"]; 

NSData *returnData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:nil error:nil]; 

BOOL enabled = [self getAutoGenerateObject:returnData]; 

[returnData release];

return enabled;
...