나는 내 응용 프로그램에서 NSOperationQueue있어NSOperations가 failsafe 방식으로 실행되도록하려면 어떻게해야합니까?
을 원하고 응용 프로그램이 종료하기 전에 모든 작업을 처리 얻을 것이 중요 무엇. 완료하기 전에
if ([NSThread isMainThread]) {
while ([[operationQueue operations] count] > 0) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]];
}
} else {
[operationQueue waitUntilAllOperationsAreFinished];
}
는 어디서 NSOperation "동결"전에 내 코드에 문제가 발생했습니다 그것은 전체 큐를 차단 : 나는 종료하기 전에 NSOperationQueue이 비어 있는지 확인 종료에 다음 코드를 가지고 . 분명히 이런 상황에서, 내 코드는 예외를 던져야한다.
하지만 작업이 멈추고 대기열을 막는 이상한 일이 일어나지 않도록주의하고 응용 프로그램을 중단하지 않고 오류가 발견되지 않도록해야합니다.
내 쓰레기 솔루션
나는 그 작업을 마무리 큐에 시간 제한을 가하고 고려 중이 야. 그런 다음 시간 초과가 발생하면 예외가 발생하여 문제가 발생할 수 있습니다.
그러나 이것은 적절하지 않습니다. 이상적으로, 저는 작업이 완료되었는지 타이머에 의존하고 싶지 않습니다.
내 질문
더 나은, 확실히 내 작업을 안전, 방법은 냉동하지 않은 실패 있나요? 내가 이해한다면
작업 방법이 "작동 중지"되었습니까? –