2013-02-22 3 views
2

제 애플리케이션에서 NSOperationQeueu에 작업을 추가합니다. 큐가 비어 있고 내가 (아래 단축 버전)를 사용하므로 모든 작업이 완료 될 때 나는 알고 싶어Howto는 NSOperationQueue가 실제로 비어 있음을 확인합니다.

내 문제는 때로는 작업 큐가있는 동안 그들은 즉시 완료 정도로 경량이다
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ 

     if (object == myLocalModeController.myFileobjectsQueue && [keyPath isEqualToString:@"operations"]) { 


     if ([myLocalModeController.myFileobjectsQueue.operations count] == 0) { 
      NSLog(@"Local: Fileobject creation has completed"); 
      } 
     } 
    } 

여전히 추가됩니다. 그 결과 큐의 항목 수가 0이지만 작업이 완료되지 않은 빈번한 항목이 생성됩니다. 그러나 현재 설정에 따라 프로그램은 '[myLocalModeController.myFileobjectsQueue.operations count] == ​​0'부터 작업이 완료되었다고 생각합니다. 대기열이 실제로 완료되었고 모든 작업이 종료되었는지 확인하는 방법에 대한 제안 사항이 있습니까? 감사. 건배, 트론

답변

2

당신은 당신이 사용하여 추가하는 동안 모든 작업을 차단할 수 있습니다 setSuspended :

- (void)setSuspended:(BOOL)suspend; 

그래서 당신은 YES로 설정하고, 설정이 완료되면 당신이 그것을 설정된 모든 작업을 추가하기 전에 아니.

+1

좋은 답변입니다. 또는 Trond는 글로벌 "여전히 설정 중"플래그 또는 "operatingOperations"와 같은 다른 속성을 추가 할 수 있습니다. –

관련 문제