почему не работает NSURLConnection connectionDidFinishLoading? - PullRequest
1 голос
/ 28 октября 2010

Мое приложение выглядит так:

У меня есть UIScrollView, и внутри есть изображение. Я реализовал делегат scrollViewDidScroll таким образом, чтобы, если прокрутка выполняла прокрутку, я создал NSURLConnection и загружал данные из некоторого URL-адреса только один раз.

Проблема в том, что NSURLConnection connectionDidFinishLoading можно вызывать или запускать только после того, как я отпущу палец в представлении прокрутки.

Чтобы быть более понятным, если я использую свой палец для прокрутки просмотра прокрутки, я подтверждаю, что NSURLConnection создан, но пока я не освобождаю представление прокрутки, никогда не вызывается connectionDidFinishLoading. Как только я отпускаю палец, вызывается делегат connectionDidFinishLoading.

Кто-нибудь может мне это объяснить, пожалуйста?

Спасибо

1 Ответ

3 голосов
/ 09 сентября 2011

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

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

...