Статьи

AFNetworking 1.0

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


В README репозитория AFNetworking GitHub это хорошо подводится.

AFNetworking — это восхитительная сетевая библиотека для iOS и Mac OS X. Она построена на основе NSURLConnection , NSOperation и других знакомых технологий Foundation. Он имеет модульную архитектуру с хорошо разработанными, многофункциональными API, которые приятно использовать.

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

  1. Насколько активен проект в отношении развития
  2. Если проект хорошо документирован и понятен
  3. Уровень вовлеченности сообщества. Могу ли я найти помощь и поддержку в случае необходимости?

По моему мнению, проект, поддерживаемый одним человеком, с большей вероятностью будет заброшен, чем проект с десятками активных участников , таких как AFNetworking. Можно с уверенностью сказать, что AFNetworking не исчезнет в ближайшее время!


Мэтт Томпсон ( @mattt ) и Скотт Рэймонд ( @sco ) начали AFNetworking в то время как в Gowallo. К сожалению, в декабре 2011 года Gowalla была приобретена Facebook и впоследствии закрыта. Однако Мэтт Томпсон не прекратил работать над AFNetworking. Он с открытым исходным кодом проекта, и именно тогда AFNetworking действительно приобрел популярность и импульс. За прошедший год замечательное сообщество разработчиков работало над AFNetworking и вносило в него свой вклад, что привело к выпуску версии 1.0 в октябре 2012 года .

Как я уже писал ранее , работать в сети сложно, особенно на мобильных устройствах. Большинство мобильных приложений имеют какой-то сетевой компонент для извлечения или публикации данных в веб-сервисе. Поэтому неудивительно, что AFNetworking является одним из самых популярных репозиториев на GitHub в категории Objective-C. Он постепенно заменяет популярную библиотеку ASIHTTPRequest и предоставляет разработчикам надежную и замечательную сетевую библиотеку для работы.

Если вы новичок в AFNetworking, вам должно быть интересно, почему вы должны использовать AFNetworking вместо NSURLConnection или любой другой собственной сетевой библиотеки, доступной с iOS SDK. Давайте посмотрим, что предлагает AFNetworking.


Помимо обширного набора функций AFNetworking, есть два важных преимущества для работы с AFNetworking. Первое преимущество — простота использования. AFNetworking широко использует блоки, что делает его API простым, элегантным и, смею сказать, красивым! Несмотря на то, что AFNetworking построен на основе NSURLConnection , разработчик не должен беспокоиться о обратных вызовах делегатов при работе с AFNetworking. Используя блоки успеха и сбоев, ваш сетевой код будет кратким, более читабельным и, как правило, более легким в обслуживании. Основные классы AFNetworking основаны на NSOperation , что дает AFNetworking большую мощность и гибкость с точки зрения планирования и очередности запросов, а также приостановки и отмены запросов.

Вторым важным преимуществом AFNetworking является его модульность. Несмотря на то, что AFNetworking поставляется с рядом специализированных классов для обработки общих задач, таких как выборка и обработка данных JSON из веб-службы, AFNetworking легко расширить в соответствии с потребностями вашего приложения.

Что вы получаете бесплатно, когда выбираете AFNetworking? Я не буду описывать все функции этой удивительной библиотеки, но я хочу выделить функции, которые действительно делают AFNetworking сияющим.

AFURLConnectionOperation является основным компонентом AFNetworking с точки зрения обработки запросов. Внутри AFURLConnectionOperation использует NSURLConnection . Как я упоминал ранее, основные классы AFNetworking являются подклассами NSOperation . Это означает, что запросы могут быть поставлены в очередь, приостановлены и отменены при необходимости.

AFHTTPRequestOperation является подклассом AFURLConnectionOperation и предназначен специально для обработки запросов HTTP (S).

AFJSONRequestOperation , AFXMLRequestOperation , AFPropertyListRequestOperation и AFImageRequestOperation являются подклассами AFHTTPRequestOperation . Каждый из этих подклассов занимается обработкой запроса определенного типа. Хотя эти специализированные классы работают «из коробки», легко создать подкласс AFHTTPRequestOperation для создания подкласса, который идеально соответствует потребностям вашего приложения.

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

Библиотека AFNetworking также поставляется с категорией в UIImageView , которую я обсуждал несколько месяцев назад . Эта легкая категория делает загрузку изображений быстрой и легкой без ущерба для скорости основного потока.

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

Изначально AFNetworking не поддерживала ARC из коробки. Однако в версии 1.0 AFNetworking теперь предлагает полную поддержку ARC по умолчанию.


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

Кроме того, документация и Wiki AFNetworking — отличный ресурс для начала работы с AFNetworking. Благодаря популярности AFNetworking, есть также множество отличных учебных пособий, которые помогут вам быстро освоиться.


Хотя более ранние версии AFNetworking были совместимы с iOS 4.3, для версии 1.0 требуется либо iOS 5.0 (или выше), либо OS X 10.7 (или выше).


AFNetworking — это не просто еще одна библиотека с несколькими служебными классами. Это надежная, но гибкая библиотека, которая доказала свою ценность и надежность. Если вы ищете сетевую библиотеку для вашего следующего проекта iOS или OS X, есть много причин выбрать этот драгоценный камень!