Alamofire 소스 분석해보기.
1. http://happyhourguide.blogspot.kr/2016/10/uiimaveview-extension.html
2. http://happyhourguide.blogspot.kr/2016/10/alamofire-2.html
3. http://happyhourguide.blogspot.kr/2016/12/alamofire-queue.html
1. http://happyhourguide.blogspot.kr/2016/10/uiimaveview-extension.html
2. http://happyhourguide.blogspot.kr/2016/10/alamofire-2.html
3. http://happyhourguide.blogspot.kr/2016/12/alamofire-queue.html
- SessionManager의 backgroundCompletionHandler
- background transfer가 끝났을 때 'DispatchQueue.main.async'로 실행된다.
- Upload
- 정상적인 경우의 실행은 'DispatchQueue.global(qos: .utility).async' 로 이루어진다.
- encodingCompletion은 정상적으로 upload가 완료되었을 때나 중간에 에러가 발생했을 때에나 항상 'DispatchQueue.main.async'에서 실행된다.
- Retry
- (request, download, upload)중 에러가 발생하면 allowRetrier를 호출하는데 이 함수의 내용은 'DispatchQueue.global(qos: .utility).async'를 통해 asynchronous로 실행된다. 그리고 should() 함수의 completionHandler의 구현에서 retry를 'DispatchQueue.global(qos: .utility).asyncAfter()'에서 실행한다.
- URLSession으로부터의 응답이 에러를 포함하고 있어 retry를 확인하는 경우 retrier.should()의 completionHandler가 'DispatchQueue.global(qos: .utility).asyncAfter()' 에서 실행된다.
- Request
- 서버 요청을 위한 task(dataTask, downloadTask, uploadTask)를 만들 때 queue를 parameter로 받아서 'queue.syncResult' 로 실행하여 task를 생성한다. parameter로 받는 queue는 SessionManager에서 'DispatchQueue(label: "org.alamofire.session-manager." + UUID().uuidString)' 로 고정되어 있다.
- Response
- response handler가 기본으로 실행되는 queue는 'DispatchQueue.main'이다. 하지만 사용자가 지정할 수 있다. async로 호출한다.
- progress handler
- 기본은 'DispatchQueue.main'이다. 하지만, 사용자가 직접 queue를 지정해 줄 수 있다. async로 호출한다.
댓글 없음:
댓글 쓰기