Поддерживает ли AFNetworking 2.0 iOS 6.0?

На прошлой неделе было анонсировано AFNetworking 2.0. Но я нахожу разные требования к AFNetworking 2.0.

README.md говорит, что для него требуется либо iOS 7.0 и выше, а Руководство по миграции AFNetworking 2.0 сообщает, что для него требуется либо iOS 6.0, либо выше.

Доза AFNetworking 2.0 поддерживает iOS 6.0?

Ответ 1

Подписывая podspec CocoaPods, вы можете просто использовать AFN 2.0, но не включать связанные файлы NSURLSession.

Например, если вы используете CocoaPods (если вы этого не сделаете, вам стоит подумать об этом, это потрясающе!), просто используйте это в своем подфайле, чтобы получить AFN 2.0 без NSURLSession -связанных функций:

pod 'AFNetworking', '~> 2.0'

Это приведет только к подпрограмме "Core", которая поддерживает целевой объект развертывания 6.0 для iOS (s.ios.deployment_target = '6.0' в podspec) и не интегрирует файлы NSURLSession. Таким образом, это будет совместимо с вашим проектом с использованием iOS6 или большего целевого объекта развертывания.


Если позже вы захотите отказаться от поддержки 6.0 в своем проекте и воспользоваться возможностями NSURLSession, вы можете добавить подпрограмму NSURLSession в свой Podfile:

pod 'AFNetworking', '~> 2.0' # Core, without NSURLSession, compatible with iOS6
pod 'AFNetworking/NSURLSession', '~> 2.0' # Add NSURLSession features, only compatible with iOS7

В podspec вы можете видеть, что добавление подпрограммы NSURLSession добавит требование s.ios.deployment_target = '7.0', как следствие, требуя, чтобы ваша цель развертывания проекта тоже была 7.0 или выше, как вы могли ожидать.


[EDIT] С моего ответа Mattt обновил свой код и podspec, чтобы вы могли получить подтекст NSURLSession даже при таргетинге на iOS6. См. этот запрос на его github (и другие связанные). Итак, теперь вы можете получить подпрограмму NSURLSession даже для проектов iOS6-min и просто условно назвать их только во время выполнения if ([NSURLSession class]).

Ответ 2

Поддержка AFNetworking 2.0 поддерживается в iOS 6. Моя проблема заключалась в том, что я ранее установил ее с платформой, установленной в iOS 7. Я исправил ее, выполнив следующее:

  • Удалено все из моего Podfile
  • Ran pod install, который удалил все мои контейнеры.
  • Добавлено все обратно в мой Podfile, с platform :ios, '6.0'

И я смог без проблем использовать мой существующий код AFNetworking.

Ответ 3

Да, он поддерживает iOS6, за исключением частей NSURLSessionTask, которые только iOS7.

Я тоже был сбит с толку, но он выглядит во время перехода от 1.x → 2.0 не все документы были обновлены. Они были сейчас, и он отлично работает в моем проекте, который поддерживает iOS6.

Ответ 4

Вы можете использовать AFNetworking 2.0. Обязательно убедитесь, что для цели развертывания установлено значение 6.0 при установке с помощью cocoa pods.I изначально была установлена ​​AFNetworking, когда моя цель развертывания была 7.0. Так что пришлось удалить ее из cocoa pods устанавливают цель развертывания на 6.0, а затем снова устанавливают.

Ответ 5

Я вообще не использовал pod. Вместо этого я загрузил его и перетащил файлы в проект, а затем столкнулся с этой проблемой. Чтобы исправить это, я просто удалил файлы AFURLSessionManager и AFHTTPSessionManager из проекта. Тогда это сработало.