코드가 다음 함수로 실행되기 전에 클로저가 함수 체인에서 끝날 때까지 기다릴 수 있는지 궁금합니다.SWIFT의 함수 체이닝 도중에 클로저가 완료 될 때까지 기다리십시오.
예를 들어:
SomeSingletonClass.sharedInstance.bFunction()
을 그리고는 sharedInstance의 첫 번째 호출이 있다면, 나는()() SingletonClass의 종료 초기화에 폐쇄 * 때까지 기다려야 bFunction을하고 싶습니다. 어떻게 든 UI를 차단하지 않고도 가능합니까?
*이 폐쇄는 액세스 권한 부여 알림을 표시 할 수 있으며 bFunction()은 사용자의 반응을 기다려야합니다 (사용자의 답변에 따라 bFunction을 전혀 호출하지 않을 수도 있음).
어떤 조언을 주셔서 감사합니다. GoZoner가 제안
업데이트
는 그래서,dispatch_semaphore_create()/signal()/wait()
으로
init()
방법에서의 실행을 차단했지만,이 경우 애플리케이션을 차단하고 AlertView를 표시 할 수 없다.
와 백그라운드 스레드에 알림을 보낼 수 있을까? 좋은 생각입니까? 팝업을 표시하면서 (이전에 시작된) 일부 네트워크 요청이있을 수 있습니다. 실행을 차단하면 이러한 요청에 영향을 미칩니 까 (예 : Request Timeout이 발생할 수 있음)? 또는 다른 스레드에서 전체 코드 줄을 실행해야합니까? – danieltmbr
표시된 것처럼'bFunction()'을 호출해야한다면'init()'이 호출 된 모든 스레드를 차단해야합니다. 다른 옵션은 'Alert'(또는 다른 UI 작업)에서 콜백을 사용하는 것입니다. – GoZoner