2010-02-28 2 views
0

Любая идея, почему sendSynchronousRequest вызывает утечку внизу? Инструменты заявляют, что ответственный кадр составляет NSURLConnection, и он указывает на NSCFString, просочившийся в линию с sendSynchronousRequest.Сообщение об утечках с NSURLConnection sendSynchronousRequest

Я читал, что это была известная проблема до OS 2.2 или что-то в этом роде, но она должна быть исправлена. Есть предположения?

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

NSURL *url = [NSURL URLWithString:@"http://www.mysite.com/api/v1/dosomething"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20.0]; 
[request setHTTPMethod:@"POST"]; 

NSData *bodyData; 

[request setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"]; 

NSString *body = @"test"; 
bodyData = [body dataUsingEncoding:NSUTF8StringEncoding]; 

[request setHTTPBody:bodyData]; 
[body release]; 

[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 

NSHTTPURLResponse *response = nil; 
NSError *error = nil; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString *responseString = [[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding]; 
+1

Использование синхронного соединения в любом случае довольно ужасно. Вы блокируете основной поток при работе с потенциально длинной сетевой операцией. –

+1

Что говорит Майк, в общем, это хороший совет, но только для того, чтобы нюансировать его - вы блокируете вызывающий поток, который может быть не основным. – nall

+0

@Mike спасибо за подсказку, но я полностью осознаю, и это, конечно, не «основная» нить. Это фоновый поток, и мне действительно нужен синхронный результат, чтобы продолжить этот поток. – marcc

ответ

1

У меня такая же проблема в моем проекте. Я пишу новый метод, и этот метод делает asynchrousRequest. После этого я вызываю метод следующим образом: performSelector .... waitUntilDone: YES. Это сработало для меня, по крайней мере, утечки уменьшились.

+0

Я обсуждал это ... Хорошо знать, буду ли я придерживаться такого подхода, это сработает. – marcc

Смежные вопросы