2012-05-29 3 views
1

NSOperationQueue를 사용하여 장치의 사진을 가져오고 있습니다. 내가 돌아갈 때 나는 전화한다.NSOperationQueue에서 waitUntilAllOperationsAreFinished를 사용하여 시간 지연을 줄이는 방법

[queue cancelAllOperations]; 
[queue waitUntilAllOperationsAreFinished]; 

이 선은 가동을 취소한다. 작업은 취소되지만 이전 페이지로 돌아가는 데 약간의 시간이 걸립니다.

시간 지연을 줄이는 방법. 미리 감사드립니다.

답변

1

cancelAllOperations는 현재 실행중인 NSOperation을 즉시 취소하지 않으며 취소 메시지 (docs 참조) 만 보냅니다. 작업이 취소되었는지는 주기적으로 확인하는 것은 사용자의 몫입니다. 예를 들어 :

if (!self isCancelled) { 
    // continue executing 
} 

은 또한 당신은 키 값 관찰자 최대 수있는 -cancel 신호 (즉, here의 예)를 모니터링 할 수 있습니다.

"cancelAllOperations"다음에 "waitUntilAllOperationsAreFinished"를 호출하는 것이 중복됩니다. cancelAllOperations를 먼저 호출하면 즉시 반환해야합니다.

마지막으로 Concurrency Programming Guide을 아직 읽지 않았 으면 좋습니다. 멀티 스레딩은 프로그래밍을위한 매우 복잡하지만 귀중한 도구이므로 Objective-C 구현 원칙을 이해하는 데 크게 도움이되었습니다.

관련 문제