블록 (완료 블록)에서 실행중인 간단한 코드가 있습니다. 완료 블록에서 블록의 프로세스가 FALSE를 반환하면 UIAlertView를 표시하려고합니다. 모범 사례로 UIAlertView를 표시하기 위해 dispatch_get_main_queue를 사용하기 때문에 배경 스레드에서 UI 메서드를 호출하지 않아야합니다. UIAlert보기의 취소 버튼을 누르면 wait_fences : reply 수신에 실패했습니다 : 10004003 오류 메시지가 나타나는 것을 제외하면이 작업은 정상적으로 작동합니다.wait_fences : 응답을받지 못했습니다 : 10004003 오류
코드는 다음과 같습니다. 이 작업을 어떻게 다른 방법으로 할 수 있을지 잘 모르겠다. 코드가 정확하고 올바르게 작동해야하지만 분명히 문제가있다. 다른 눈으로도 문제를 찾을 수 있기를 바랬습니다.
__block bool theResult;
[self.mbProgressHUD showAnimated:YES whileExecutingBlock:^{
theResult = [someClass someMethodThatReturnsTRUEorFALSE];
} completionBlock:^{
[self.mbProgressHUD removeFromSuperview];
if (theResult) {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *theAlert....
[theAlert show];
});
};
}];
UIAlert에서 확인 버튼을 선택한 경우를 제외하면 모든 것이 정상적으로 작동하는 것 같습니다. wait_fences 수신 : 회신을받지 못했습니다 : 100040003 오류 메시지.
도움을 주시면 감사하겠습니다.
나는 또한 그것을 시도했다. completionBlock의 모든 것을 감싸는 dispatch_asynch (dispatch_get_mainqueue(),^{}) 블록으로 처리했습니다. 같은 문제. 방금 다시 시도했는데 동일한 결과가 나타납니다. – StinkyDuck
이 전체 스 니펫은 백그라운드 스레드에 있습니까? 'showAnimated : ... '도 주 스레드에 있어야합니다. –