2013-03-05 4 views
0

그래서 긴 작업을 NSOperations로 분해하는 가장 좋은 방법이 궁금합니다. 내가 3 개 장기 실행 작업을하는 경우, 기본적으로 수행 한 NSOperation 하위 클래스를 가지고하는 것이 좋습니다NSOperation 계층, 작업 단위

Single NSOperation subclass 
- (void)main { 
    // do long running task 1 
    // do long running task 2 
    // do long running task 3 

    // call back the delegate 
} 

또는 더 나은 각 작업 NSOperation의 서브 클래스가, 그리고 내의 ViewController에서 각 작업을 관리하는 것입니다 같은 하나의 작업 단위로? 미리 감사드립니다.

+0

다른 작업과 독립적으로 수행해야 할 작업이 있습니까? 작업을 병렬 또는 엄격하게 실행해야합니까? –

답변

3

작업 대기열이 직렬 (즉, 최대 동시 작업 1)인지 또는 병렬인지 여부와 작업의 성격에 따라 다릅니다. 대기열이 연속적이면 실제로 문제가되지 않습니다. 큐가 평행 인 경우, 다음 요인의 무리에 따라 달라집니다

  • 안전하게 작업 할 것입니다 동시에
  • 수행하는 작업 공유 리소스에 (예 : 네트워크 또는 디스크 IO, 또는 자물쇠로 주장) 동시성
  • 을 제거 할 것이라고 별도로 파견의 오버 헤드 가치가 충분히 큰 각 작업 단위는

또한 (편집), 당신은 ADVAN가 필요하지 않은 경우 NSOperationQueue (작업 종속성 및 우선 순위, KVO 등)의 ced 기능을 사용하려면 대신 디스패치 대기열을 사용하는 것이 좋습니다. 상당히 가벼워졌습니다.

+0

+1 동의합니다;) –