2012-02-15 1 views
1

CFRunLoopInMode 및 NSRunLoop가 특정 시간 을 실행하려면, NSRunLoop 및 CFRunLoop의 방법이 있습니다 모든 이벤트가 완료 전까지 실행합니다.NSRunLoop은

그러나 runLoop의 모든 메시지를 처리하고 종료 된 경우 종료하고 싶습니다. 일부 runLoop 소스에는 처리 시간이 무기한 될 수 있습니다. 그래서, 나는 그 시간을 언급 할 수 없다.

답변

5

CFRunLoopRunInMode을 사용하면 한 번에 이벤트 루프를 실행할 수 있으며 소스를 처리했는지 여부를 알 수 있습니다. 그래서 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 : 당신이 시도 할 수

while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, 1) == kCFRunLoopRunHandledSource) { 
    // nothing 
} 

또 다른 방법은 kCFRunLoopBeforeWaitingactivities 인수와 CFRunLoopObserver를 만드는 것입니다. 이 관찰자는 실행 루프가 소스 또는 타이머가 시작될 때까지 기다리기 위해 잠자기 상태가되기 직전에 호출됩니다. 관찰자의 설명 선에서 CFRunLoopStop(CFRunLoopGetCurrent())으로 간단하게 전화 할 수 있습니다.

+0

고맙습니다. 그것을 확인하고 답으로 표시하겠습니다. – coder000001