내 appDelegate
에 내가 가진 아이폰 OS 응용 프로그램에서 일하고 있어요 func 응용 프로그램의 끝에서 true를 반환하기 전에 완료 될 때까지 기다리는 것을 좋아합니다.될 때까지 기다립니다 스위프트/IOS는
답변
참고 : 이 아니라이 스레드를 차단하므로이 방법으로 수행해야합니다. 더 좋은 방법은 위의 Nate의 의견을 참조하십시오.
GCD를 사용하여 비동기 호출이 완료 될 때까지 기다리는 방법이 있습니다. 코드는 다음과 같은
var semaphore = dispatch_semaphore_create(0)
performSomeAsyncTask {
...
dispatch_semaphore_signal(semaphore)
}
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
dispatch_release(semaphore)
위키 백과 같을 것이다 것은 경우에 OK article 당신이 세마포어에 대해 아무것도 알 수 없습니다.
위의 시도했습니다. dispatch_release (세마포어)가 Apple에 의해 삭제되었습니다. –
그래서 dispatch_release (세마포어)를 제거했지만 semaphore_wait가 전체 스레드를 차단하는 것 같습니다. 실행이 비동기식 클로저에 멈추는 것처럼 보입니다. –
학습의 정신에서 왜 내 의견이 나쁜 생각인지 설명해 주시겠습니까? –
이것은 Swift 3의 해결책입니다. 다시 비동기 작업이 완료 될 때까지 스레드를 차단하므로 특정 경우에만 고려해야합니다.
let semaphore = DispatchSemaphore(value: 0)
performAsyncTask {
semaphore.signal()
}
// Thread will wait here until async task closure is complete
semaphore.wait(timeout: DispatchTime.distantFuture)
- 1. GWT가 완료 될 때까지 setVisibleRangeAndClearData를 기다립니다.
- 2. COM Interop - Excel이 완료 될 때까지 기다립니다.
- 3. 응용 프로그램을 실행하고로드 될 때까지 기다립니다.
- 4. android sdk에서 애니메이션이 완료 될 때까지 기다립니다.
- 5. 명령을 실행하고 완료 될 때까지 기다립니다. C#
- 6. WebBrowser.Print()가 완료 될 때까지 기다립니다. .NET
- 7. ImageView - 이미지를 변경하고 레이아웃이 완료 될 때까지 기다립니다
- 8. EC2 Java Api Ec2 인스턴스가 생성 될 때까지 기다립니다.
- 9. Process.Start()로 시작한 후 WPF 앱이로드 될 때까지 기다립니다.
- 10. C# Windows Store 앱에서 압축 해제가 완료 될 때까지 기다립니다.
- 11. 비동기 작업이 완료 될 때까지 기다립니다. Angular JS를 시작하기 전에
- 12. 이전 효과가 완료 될 때까지 애니메이션 효과를 기다립니다.
- 13. 개체를 반환하기 전에 블록이 완료 될 때까지 기다립니다.
- 14. 기다립니다
- 15. AS2 : 프레임을로드하기 전에 actionscript가 실행될 때까지 기다립니다.
- 16. 이미지가 S3에서 처리 될 때까지 기다렸다가 레일즈를 사용하여 이미지가 사라질 때까지 기다립니다.
- 17. Qt는 사용자가 QGraphicsScene에서 항목을 선택할 때까지 기다립니다.
- 18. 타이머가 경과 할 때까지 return 문을 기다립니다.
- 19. 기다립니다 셀레늄
- 20. 기다립니다
- 21. 이미지가로드 될 때까지 이미지가 대체 될 때까지 기다림
- 22. 기다립니다
- 23. 기다립니다
- 24. TinyMCE가로드 될 때까지 기다려주십시오.
- 25. 이미지가로드 될 때까지 숨기기
- 26. 부모 창을 다시로드 한 다음 팝업 창을 닫을 때까지 기다립니다.
- 27. 결과가 발견 될 때까지 MongoDB 락킹
- 28. 각도, 두 개의 지시문이로드되고 다른 외부 라이브러리가 시작될 때까지 기다립니다.
- 29. Apache Spark 응용 프로그램을 한 번 실행하고 데이터가 처리 될 때까지 기다립니다.
- 30. while 루프를 변수로 인터럽트 한 다음 vwait를 사용하여 루프가 종료 될 때까지 기다립니다. 작동 안함?
스위프트에는 이러한 종류의 기능이 없습니다. 로드 그래픽을 사용하여'didFinishLaunching' 본문에 창 및 루트보기 컨트롤러를 설정 한 다음 API 로그인 완료 핸들러에서 새보기 컨트롤러로 이동해야합니다. –
didFinishLaunching은 더 이상 사용되지 않지만 좋은 생각 인 것 같습니다. –