ИЗБЕГАТЬ во что бы то ни стало делать синхронные соединения!Это, очевидно, замораживает ваш пользовательский интерфейс (и, конечно, ухудшается, если у вас недостаточно пропускной способности).
Что вы можете сделать, это использовать синтаксис блоков для написания более читабельного кода, когда вам нужно скачатьданные.Создайте класс, который реализует методы делегата NSURLConnection
, а затем вызовите блок, когда данные будут готовы.
Посмотрите мой класс OHURLLoader на github, например, который делает именно это(и это только одно решение).
Пример использования:
NSURL* url = ...
NSURLRequest* req = [NSURLRequest requestWithURL:url];
OHURLLoader* loader = [OHURLLoader URLLoaderWithRequest:req];
[loader startRequestWithCompletion:^(NSData* receivedData, NSInteger httpStatusCode) {
NSLog(@"Download of %@ done (statusCode:%d)",url,statusCode);
outputTextView.text = loader.receivedString;
} errorHandler:^(NSError *error) {
NSLog(@"Error while downloading %@: %@",url,error);
outputTextView.text = [error localizedDescription];
}];