AFNetworking 2.x 와 iOS6

AFNetworking은 Server-Client 개발 시 많이 사용하는 오픈소스입니다.
Connection 세션관리부터 iOS7에서 새로이 추가된 Task 개념까지 충실히 지원하고 있으며 현재도 업데이트가 활발한 오픈소스입니다.

iOS7이 정식으로 발표되고 또 iPhone5s/iPad mini retina가 출시되면서 64bit 지원이 또 다른 개발 화두가 된 시점에서
제가 진행 중인 프로젝트의 앱에도 64bit를 지원해보고자 세팅을 바꾸고 여러 compile warning을 하나씩 확인하면서 수정하다보니
기 적용되어있던 AFNetworking 1.x가 문제가 되었습니다.

이를 다 바꾸기보다는 최신버전이 있는지 확인을 해보았더니 2.0이 등록되어 있었고 반갑게 64bit 지원을 한다고 되어 있어 선뜻 업데이트를 했습니다.

문제는 여기서부터..

현재 진행 중인 프로젝트 iOS Client의 deployment target이 6.0부터인데 7.0에서만 주로 테스트하다보니 간과하고 넘어간 부분이 있었습니다.
바로 AFHTTPSessionManager 의 블록코드 정의에 있는 NSURLSessionDataTask 였습니다.
이 녀석이 7.0에 추가된 개념이더군요..

바로 수정에 들어갔는데 블럭 정의를 바꿀 수 있는 방법이.. 있을리 만무하죠;

결론은..

역시나 저와 같은 문제를 겪은 분의 친절한 Q&A thread가 있더군요.
http://stackoverflow.com/questions/20772984/afnetworking-2-0-3-not-working-on-ios-6
참 친절한 stackoverflow입니다.
위 URL의 답변에 보면 iOS7 이상 지원 시에는 AFHTTPSessionManager를 사용하고, iOS6 이상 지원 시에는 AFHTTPReuqestOperationManager를 사용하라고 합니다.

두 클래스에 정의된 메소드들은 거의 동일하며, 블럭 스타일 역시 비슷합니다.
조금 다르다면 NSURLSessionDataTask를 사용할 수 있다/없다의 수준인 듯 하네요.
하이레벨의 HTTP 프로그래밍이 아니라면 거의 간과해도 될 정도입니다.

오랜만에 글도 적을 여유도 있고해서 끄적여봅니다.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.