2014-05-23 3 views
2

AFHTTPSessionManager를 서브 클래스 화하고 구현과 관련된 몇 가지 메소드를 추가했습니다. AFNetworking 싱글 톤 동시성

  • 여전히 AFHTTPSessionManager의 싱글 모범 사례를 만들고있다 : 나는 싱글과 동시로 내 서브 클래스를 사용하여 주위에 몇 가지 질문이? (AFNetworking 2.0, iOS7)

  • [self GET/POST 메서드를 사용하여 하위 클래스의 싱글 톤을 통해 요청을하면 동시 작업을 지원합니까? 예 : 느린 동기화를 실행 한 다음 검색을 수행합니다. 검색이 즉시 시작되거나 동기화가 완료 될 때까지 기다릴 것입니까? 또는 다른 방법으로 묻는다면, 이러한 작업은 독립적 인 작업 대기열에 있습니까?

답변

6

당신은 질문 :

여전히 가장 좋은 방법을 AFHTTPSessionManager의 싱글을 만들 수 있나요? (AFNetworking 2.0, iOS7)

모범 사례인지 확실하지 않습니다. 싱글 톤은 자주 조롱을받습니다 (싱글 톤에 대한 많은 논점에 대한 링크가있는 What's wrong with singleton? 참조). 그들은 편리하지만, 대부분의 애플 리케이션을 위해, 세션 관리자를위한 싱글 톤은 불필요합니다. 내 일반적인 권고는 당신이 그렇게 할 필요가 없다면 싱글 톤을 사용하지 말아야한다는 것입니다.

이것은 (Stack Overflow에서 명시 적으로 싫어하는) 의견과 논쟁의 주제이므로 더 이상 질문하지 않을 것이라고 제안합니다. 위의 Stack Overflow 질문에있는 링크를 따라 가면 거기에 많은 의견이 표시됩니다.

요청할 경우 ... 동시 작업을 지원합니까?

예, 네트워크 요청은 비동기 적으로 실행되며 동시 작업을 지원합니다.

이러한 작업은 독립적 인 작업 대기열에 있습니까?

이 글을 쓸 때 AFHTTPSessionManager을 통해 생성 된 요청은 작업 대기열에서 전혀 실행되지 않습니다. 세션의 관리자 NSURLSession은 작업 자체를 관리합니다. 한편

NSURLConnection 기반 AFHTTPRequestOperationManager은 하나의 동시 작업 큐에 GETPOST 요청을 실행합니다. 직접 AFHTTPRequestOperation을 수동으로 생성하는 경우 원할 경우 자체 대기열에 추가 할 수 있습니다.

하지만이 모든 것은 학문적입니다. 귀하의 진짜 질문은 GETPOST 요청이 비동기 적으로 실행되는지 여부와 대답이 "예"라고 생각합니다. 그리고 질문이 서로에 대해 동시에 실행되는지 아닌지에 대한 대답은 "예"입니다.

+2

대단히 감사합니다. 그것은 downvotes를 설명합니다. 이 특정 경우에는 싱글 톤 패턴이 문서의 저자에 의해 권장됩니다. http://cocoadocs.org/docsets/AFNetworking/2.0.0/Classes/AFHTTPSessionManager.html – alexphilipp

+0

*** "내 일반적인 권고는 당신이 그렇게 할 필요가 없다면 싱글 톤을 사용하지 마십시오."*** 싱글 톤 AFHTTPSessionManager 객체는 요청 serializer 및 응답 serializer 구성을 유지하며 이후 요청에 대해서는 초기화되지 않습니다. 메모리 사용량을 계산하지 못했지만 NSObject에서 상속되었으며 몇 가지가 있습니다. 무거운 속성이 무엇입니까? – Itachi

+0

세션 관리자를 항상 다시 인스턴스화하지 않는 인수이지만 싱글 톤과 동일하지 않습니다. 재 패턴화를 포함하지 않는 다른 패턴 (예 : 종속성 주입)이 있지만 싱글 톤의 문제를 수반하지 않는다. 네트워크 관리자를 위해 싱글 톤을 사용하는 것은 내가 본 가장 나쁜 패턴이 아니라는 것이다. (사실, 나는 그것을 수행했다.) 나의 요지는 단지 많은 사람들이 너무 몰리는 것이다. 그 의미와 대안을 생각하지 않고 싱글 톤으로 빠르게 옮겨 가라.하지만 여기서는 싱글 톤을 다시 소화해야한다고 생각하지 않는다. 다른 곳에서는 철저히 다루어졌다. – Rob