2013-12-12 3 views
1

NSOperation는 백그라운드 작업 전에 완료됩니다 세 이상입니다 완료 할 작업이 이고 대기열에서 제거됩니다. 다음 작업이 시작됩니다. 원하지 않는 부분이 있습니다. 백그라운드 작업이 완료 될 때까지 NSOperation을 계속하는 방법을 도와주십시오.

+1

NSOperation 객체를 생성 한 코드를 표시 할 수 있습니까? 하위 클래스를 사용하는 경우 하위 클래스를 올바르게 구현 한 것이 중요합니다. 블록을 인수로 취하는'addOperationWithBlock :'메소드를 사용한다면 블록은 반드시 * synchronous *를 실행하고 있어야한다. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html을 참조하십시오. – CouchDeveloper

답변

1

NSOperation KVO의 그것의 특성은 isFinished 및 isExecuting. documentation 완료 또는 작업의 취소시

,에서 동시 작업 객체는 isExecuting 모두 KVO 알림을 생성해야하며 은 작동 상태의 최종 변화를 표시하는 키 경로를 isFinished. 취소의 경우 작업이 완전히 완료되지 않은 경우에도 이 isFinished 키 경로를 업데이트하는 것이 중요합니다. 큐 작업에서는 큐에서 제거하기 전에 이 완료되었음을보고해야합니다. KVO 알림을 생성하는 것 외에도 isExecuting 및 isFinished 메서드의 재정의는 작업 상태에 따라 정확한 값인 을 계속 반환해야합니다.

기본적으로 알림 isFinished = YESisExecuting = NO을 생성하면 NSOperation이 대기열에서 제거됩니다.