Xcode: iPhone зависает при вызове «sendSynchronousRequest» - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть проблема, и я не знаю, как ее исправить,
В моем приложении у меня есть UIWebView, который загружает pdf, начиная с "folder1 / 1.pdf"

Сама загрузка работаетхорошо, но если я вызываю функцию в моем приложении, которая проверяет, есть ли у меня 2.pdf в той же папке, он просто зависает, никаких ошибок нет ничего.

функция, которую я вызываю:

- (void)isValidURL
{

    int i = 1;
    NSString *folder = @"folder1";
    NSURL *url = [NSURL URLWithString:[baseUrl stringByAppendingFormat:@" %@/%d.pdf",folder,i]];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];
    NSHTTPURLResponse *res = nil;
    NSError *err = nil;
    [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
}  

Любая помощь очень ценится!

СПАСИБО !!

Ответы [ 3 ]

3 голосов
/ 05 апреля 2011

Синхронные запросы замораживают пользовательский интерфейс во время выполнения их передачи данных, и, если есть проблема, они могут зависать пользовательский интерфейс на неопределенное время.нужно использовать NSURLRequest, это серьезное излишество и неправильный инструмент для работы.

Вы хотите использовать NSFileManager fileExistsAtPath: метод.Намного легче.NSURLRequest предназначен для просмотра по сети.


Отредактировано для добавления

Если вы говорите, что файл фактически находится в сети, то вы хотитесделайте асинхронный запрос , чтобы пользовательский интерфейс мог продолжать функционировать, даже если он просто отображает индикатор активности вращения.Вы можете использовать NSURLConnection initWithRequest и настроить делегата и тому подобное, или вы можете использовать превосходную библиотеку ASIHTTPRequest , которая выполняет почти всю работу.

1 голос
/ 05 апреля 2011

Вы можете найти лучшую демонстрацию в приложении TopPaid от Apple.В этом проекте они хорошо объясняют, как бороться с загрузкой изображений, отправляя асинхронный запрос без блокировки пользовательского интерфейса.В вашем случае вы можете скачать файл и сохранить его в файловой системе в формате PDF или как угодно.

0 голосов
/ 18 января 2012

Я думаю, что вы можете легко написать свои асинхронные функции, это займет небольшое количество кода. См. В документации для разработчиков Apple об асинхронном URL-запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...