NSURLConnection с делегатом vs initWithContentsOfURL: с Grand Central Dispatch

Я пишу приложение, которое загружает очень много данных JSON из Интернета. Моему приложению необходимо проанализировать эти данные JSON и затем вернуть полученные объекты самодельному делегату.

Теперь мне было интересно, могу ли я лучше использовать NSURLConnection или комбинацию dispatch_async Grand Central Dispatch с initWithContentsOfURL: (с использованием GCD для предотвращения зависания).

Использование Grand Central Dispatch намного проще в реализации, особенно потому, что мне не нужны ни делегаты, ни NSMutableData, ни все другие переменные, которые используются временно. Но, конечно, у всего, что имеет плюсы, есть свои минусы.

Каковы преимущества NSURLConnection перед initWithContentsOfURL с GCD?


person Community    schedule 04.01.2011    source источник


Ответы (1)


  1. Вы можете настроить таргетинг на iOS 3.x.
  2. Вы можете использовать настраиваемый NSURLRequest, который, например, запрашивает результаты HTTP POST - фабрика NSData выполняет базовый GET только при передаче URL-адреса HTTP.
  3. Вы можете отслеживать прогресс загрузки с помощью делегата NSURLConnection.

Вот и все в моей голове. :)

person Jonathan Grynspan    schedule 04.01.2011
comment
Я читаю данные JSON из источника, доступного только для чтения, поэтому мне не нужен POST, и я не вижу причин, по которым люди все еще используют iOS 3. :) - person ; 04.01.2011
comment
Тогда, кроме отслеживания прогресса, никакой пользы для вас нет. Используйте GCD, и ваш код останется чистым. :) - person Jonathan Grynspan; 04.01.2011
comment
Есть еще одно преимущество. При использовании NSURLConnection с делегатом вы можете отменить соединение в любое время. Используя GCD, вы можете указать только флаг в блоке, который будет проверяться во время выполнения блока, но отмена соединения невозможна. - person lukewar; 29.01.2011