使用NSData,NSURL,NSMutableURLRequest,NSURLConnection和sendSynchronousRequest时泄漏

时间:2010-06-16 11:06:00

标签: nsurlconnection

我在下面的代码“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 error:nil];  BOOL enabled = [self getAutoGenerateObject:returnData];  返回已启用;

请帮我解决这个问题。 谢谢, Madan Mohan

1 个答案:

答案 0 :(得分:0)

您需要释放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;