2014-05-12 7 views
7

NSOperationQueue에서 NSURLSession으로 파일을로드하기 위해 이전 코드를 이식하려고합니다. 거의 모든 것이 괜찮지 만 다른 작업을로드하기위한 우선 순위를 설정하는 방법을 찾을 수 없습니다. NSURLSession이 우선 순위 지정을 전혀 지원하는지 아는 사람 있습니까? 그리고 그렇다면 어떻게 보여줄 수 있습니까?NSURLSession 우선

미리 감사드립니다.

로스트

+1

(https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSessionConfiguration_class/Reference/Reference를 해결합니다. html # // apple_ref/occ/instp/NSURLSessionConfiguration/networkServiceType). –

+0

NSURLSession 우선 순위를 보지 못했다고 들었습니다. 전체 묶음을로드하는 대신 짧은 작업 세트로 taskQueue를 예약해야한다고 생각합니다. – Xcoder

+0

우선 순위가 세션이 아니라 작업별로 보입니다. 나는 HTTPMaximumConnectionsPerHost를 사용하여 세션의 우선 순위를 지정할 수 있다고 생각합니다. –

답변

3

이 아이폰 OS 8 아직 사용할 수 있는지 잘 모르겠어요,하지만 난 NSURLSession.h에서이 라인 애플 아이폰 OS 8.1 릴리스 노트이 있음을 시사한다

FOUNDATION_EXPORT const float NSURLSessionTaskPriorityDefault NS_AVAILABLE(10_10, 8_0); 
FOUNDATION_EXPORT const float NSURLSessionTaskPriorityLow NS_AVAILABLE(10_10, 8_0); 
FOUNDATION_EXPORT const float NSURLSessionTaskPriorityHigh NS_AVAILABLE(10_10, 8_0); 

파일 발견 그래도 8.1에서 사용할 수 있습니다.

+1

이것은 iOS 8 이상에서 사용할 수 있지만, 최적화 된 빌드에서 사용할 때 버그가있는 것으로 보입니다. https://openradar.appspot.com/23956486 –

5

가 NSURLSession.h

의 속성이
@property float priority NS_AVAILABLE(10_10, 8_0); 

그 설명을

  • 이 작업의 우선 순위에 대한 배율을 설정했다. 배율 인수는 0.0과 1.0 사이의 값이며 0.0은 이 가장 낮은 우선 순위로 간주되고 1.0은 가장 높은 것으로 간주됩니다.
  • 우선 순위는 힌트이며 작업 수행을 어렵게하지는 않습니다. 작업의 우선 순위는 언제든지이 API 을 사용하여 변경할 수 있지만 모든 프로토콜이이를 지원하지는 않습니다. 이러한 경우에는 적용된 마지막 우선 순위 인 이 사용됩니다. 우선 순위를 지정하지 않으면 작업은 NSURLSessionTaskPriorityDefault 상수로 정의 된 기본 우선 순위
  • 으로 작동합니다. 두 가지 추가 우선 순위 수준이 제공됩니다. NSURLSessionTaskPriorityLow 및 NSURLSessionTaskPriorityHigh, 그러나 사용은 이에 국한되지 않습니다.

나는 우리의 응용 프로그램에서 동시에 트리거하고 dataTask 영원히 다운로드 대기 할 수있는 downloadTask 및 dataTask 사이에 그것을 사용할 수 있습니다. 그러나 이것은 내가 본 유일한 우선 순위는 [networkServiceType]에서 오는 문제

dataTask.priority = NSURLSessionTaskPriorityHigh; 
관련 문제