내 전체 스레드를 진행하면서 메인 스레드에서 NSProgressIndicator를 사용하여 진행 상황을 업데이트하고 있습니다. 이제 다른 클래스 파일에서 객체를 호출하고 그 객체가 내 주 스레드의 값으로 돌아갈 때까지 기다릴 때 NSProgressIndicator가 사라질 것입니다. 다른 스레드로부터 반환 값을 얻을 때까지 주 스레드가 차단되어 있기 때문입니다.메인 스레드가 코코아 앱에서 차단되었을 때 UI가 업데이트되지 않습니다.
내 질문은 주 스레드에서 UI를 업데이트하지 않고 차단하고 다른 개체를 백그라운드에서 실행하고 필요에 따라 주 스레드에 값을 반환하는 데 권장되는 방법입니다. 블록을 사용하는 방법을 알고 있지만 블록 연산은 값을 반환 할 수 없습니다. 는 내가 필요하면이 의사 코드를하는 데 도움이 무언가이다 :
-(IBAction) main {
//Update progress indicator UI to show progress
//perform an call to another object from another class.
// wait till i get its return value.
//Update progress indicator UI to show progress
// Use this return value to do something.
//Update progress indicator UI to show progress
}
다른 객체에 대한 호출이 이루어지면, 내가 메인 스레드가 차단되어 있기 때문에 나는 완전히 가지고있는 확정 NSProgressIndicator가 사라집니다. 감사.
여기서 'dispatch_release'를 호출하지 마십시오. 이 대기열을 만들지 않아서 해제하지 않아야합니다. –
@RobNapier 당신은 절대적으로 옳다. 고지에 대한 내 대답, 고맙습니다 – Alladinian
편집이 코드를 추가 할 때 내 다른 메서드 정의를 찾을 수 없다는 오류가 발생합니다. 어떤 아이디어? – cocoacoder