programing

swift 2.2에서 몇 밀리초 동안 자는 방법?

megabox 2023. 8. 7. 22:28
반응형

swift 2.2에서 몇 밀리초 동안 자는 방법?

swift 2.2에서 몇 밀리초 동안 sleep을 사용하는 방법을 알려주실 분 있나요?

while (true){
    print("sleep for 0.002 seconds.")
    sleep(0.002) // not working
}

그렇지만

while (true){
    print("sleep for 2 seconds.")
    sleep(2) // working
}

효과가 있습니다.

ussleep () 수백만 분의 1초가 걸립니다.

usleep(1000000) //will sleep for 1 second
usleep(2000) //will sleep for .002 seconds

OR

 let ms = 1000
 usleep(useconds_t(2 * ms)) //will sleep for 2 milliseconds (.002 seconds)

OR

let second: Double = 1000000
usleep(useconds_t(0.002 * second)) //will sleep for 2 milliseconds (.002 seconds)

나는 보다 더 우아하다고 생각합니다.usleep현재 swift 구문의 솔루션은 다음과 같습니다.

Thread.sleep(forTimeInterval: 0.002)

사용하다func usleep(_: useconds_t) -> Int32(수입)Darwin또는Foundation...)

중요:usleep()수백만 분의 1초가 걸립니다.usleep(1000000)1초 동안 잘 것입니다.

만약 당신이 정말 잠이 필요하다면, 노력하세요.usleep@user3441734의 답변에 제시된 바와 같이.

그러나 수면이 가장 좋은 옵션인지 여부를 고려해야 할 수도 있습니다. 수면은 일시 중지 버튼과 같고 앱이 실행되는 동안 중지되고 응답이 없습니다.

다음을 사용할 수 있습니다.NSTimer.

 //Declare the timer
 var timer = NSTimer.scheduledTimerWithTimeInterval(0.002, target: self, selector: #selector(MyClass.update), userInfo: nil, repeats: true)
 self, selector: "update", userInfo: nil, repeats: true)



func update() {
    // Code here
}

우리의 수면을 위한 논블로킹 솔루션:

DispatchQueue.global(qos: .background).async {
    let second: Double = 1000000
    usleep(useconds_t(0.002 * second)) 
    print("Active after 0.002 sec, and doesn't block main")
    DispatchQueue.main.async{
        //do stuff in the main thread here
    }
}

또는 다음과 같습니다.

DispatchQueue.main.asyncAfter(deadline: .now() + 0.002) {
   /*Do something after 0.002 seconds have passed*/
}

예: 단추 알파 값 변경

 sender.alpha = 0.5
 
 DispatchQueue.main.asyncAfter(deadline:.now() + 0.2){
             sender.alpha = 1.0
         }

언급URL : https://stackoverflow.com/questions/38119742/how-to-sleep-for-few-milliseconds-in-swift-2-2

반응형