Несколько недель назад AFNetworking достигла версии 1.0 , важной вехи для каждого программного проекта. В этом кратком совете я быстро познакомлю вас с AFNetworking и покажу, что может предложить версия 1.0.
Что такое AFNetworking?
В README репозитория AFNetworking GitHub это хорошо подводится.
AFNetworking — это восхитительная сетевая библиотека для iOS и Mac OS X. Она построена на основе
NSURLConnection
,NSOperation
и других знакомых технологий Foundation. Он имеет модульную архитектуру с хорошо разработанными, многофункциональными API, которые приятно использовать.
Как отмечает README, наиболее важным компонентом AFNetworking является его сообщество, и я не могу согласиться с этим. Всякий раз, когда я рассматриваю библиотеку с открытым исходным кодом для проекта, я ищу три вещи:
- Насколько активен проект в отношении развития
- Если проект хорошо документирован и понятен
- Уровень вовлеченности сообщества. Могу ли я найти помощь и поддержку в случае необходимости?
По моему мнению, проект, поддерживаемый одним человеком, с большей вероятностью будет заброшен, чем проект с десятками активных участников , таких как 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
для создания подкласса, который идеально соответствует потребностям вашего приложения.
HTTP-клиент
Если ваше приложение общается с веб-сервисом, то вы полюбите AFHTTPClient
. Этот класс предоставляет удобный интерфейс для взаимодействия с веб-сервисом. Используя подклассы AFHTTPClient
, вы можете указывать заголовки по умолчанию для каждого запроса, управлять аутентификацией, создавать запросы из нескольких AFHTTPClient
и многое другое. AFHTTPClient
также имеет возможность отслеживать и реагировать на изменения в сети, как это делает класс AFHTTPClient
Apple.
UIImageView
Библиотека AFNetworking также поставляется с категорией в UIImageView
, которую я обсуждал несколько месяцев назад . Эта легкая категория делает загрузку изображений быстрой и легкой без ущерба для скорости основного потока.
Фоновые задачи
В версии 1.0 вы также можете пометить операцию запроса как фоновую задачу, что означает, что операция будет продолжать выполняться в фоновом режиме, когда приложение перемещается в фоновый режим.
ARC
Изначально 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, есть много причин выбрать этот драгоценный камень!