이번 과제에 아래와 같은 구현 요청 사항이 있었다.
"특정 작업이 종료된 후, 3초 뒤에 다른 작업을 수행할 수 있도록 코드를 작성해요."
팀원들과 개인적으로 생각했을 때 escaping closure 혹은 DispatchQueue.main을 사용하면 간단하게 해결할 수 있을 것 같았다.
나름 쉽게 해결할 수 있겠다! 싶었는데, 실제로 구현할 때 한 가지 깨닳았다.
command line tool에는 UI가 없을 뿐더러 main Thread 또한 존재하지 않는다.
따라서 DispatchQueue는 실행이 될 수 없는 함수였다.
sleep()를 사용해서 주어진 시간동안 터미널에서 입출력을 제한할 수 있었는데,
한가지 느꼈던 점은, 당연하게 "000 일것이다!"로 생각했던 이유에 대해 고민해봤다.
많이 알고 있지만, 자세히 모르고 있는 - 그런 상황이 많이 발생하고 있지 않나 싶다.
내가 남에게 명확하게 설명을 할 수 있는 단계가 아님에도 키워드나 방법이 떠오르는 이유는 뭘까.
단순히 많이 검색했고 겪어보기도 했기 때문이지만,
'알고 있다'고 착각하고 있는 부분이 많이 있는 것 같다.
DispatchQueue.main.asyncAfter(deadline: now() + 3, execute {
// 3초 뒤에 구현 희망하는 함수!
}
sleep(3)
초기에 DispatchQueue로 구현해야할 것 같았던 delay를 거는 방식은
간단하게 sleep이라는 함수를 통해 UInt32 타입을 활용해서 몇 초동안 입출력을 멈출지 지정할 수 있었다.
참고 - https://www.advancedswift.com/delay-function-sleep-thread-swift/
🤔 Questions:
→ nanosecond가 아니냐는 질문과 관련해서 찾아보기도 했다.
왜 sleep()는 UInt32를 받는걸까?
많은 도움이 되었습니다, 감사합니다.