Все ли данные из URL загружаются в NSData при инициализации? - PullRequest
0 голосов
/ 11 сентября 2010

Что именно происходит, когда я делаю это ...?

NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL urlWithString: @ "..."]];

Он сразу же выходит в Интернет, получает все данные по URL, возвращается и переходит на следующую строку? Или это все настраивает, и данные читаются позже, когда запрашиваются байты NSData? Если данные читаются позже, все ли данные читаются за один раз? Или данные считываются по частям, поскольку приложение нуждается в них?

Моя основная проблема в том, что у меня есть очень большой файл XML для анализа. Если я настрою объект NSData и проанализирую его через NSXMLParser, будет ли приложение взорвано, потому что данные XML слишком велики? Или приложение «делает правильные вещи» и анализирует XML как поток байтов данных?

Спасибо!

1 Ответ

0 голосов
/ 11 сентября 2010

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

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

...