2017-09-07 7 views
2

저는 Timer in Swift를 사용하고 정확히 어떻게 동작하는지 확신 할 수 없습니다. 2 초 동안 스캔을 시도하고 주변 장치에 연결 한 다음 스캔을 종료하려고합니다. 다음 코드는 connectToPeripheral, startScanendScan이 같은 클래스의 함수입니다.Timer는 Swift에서 어떻게 작동합니까?

startScan() 
Timer(timeInterval: 2, target: self, selector: #selector(connectToPeripheral), userInfo: nil, repeats: false) 
    endScan() 

타이머에서 선택기가 어떻게 작동합니까? 타이머가 코드에 의해 호출 된 후 코드는 셀렉터 만 실행하고 코드의 다음 비트는 호출하지 않거나 셀렉터가 실행을 마친 후에 만 ​​다음 호출을 호출합니까? 기본적으로 타이머와 셀렉터에 관한 이벤트 사이클이 무엇인지 묻고 있습니다.

답변

1

Timer은 지정된 시간 경과 후 선택자 입력 인수에 지정된 메소드를 timeInterval으로 호출합니다. Timer은 나머지 코드의 수명주기에 영향을 미치지 않지만 (물론 선택자에 지정된 메소드 제외) 다른 모든 함수는 정상적으로 실행됩니다.

class TimerTest: NSObject { 

    var timer:Timer? 

    func scheduleTimer(_ timeInterval: TimeInterval){ 
     timer = Timer.scheduledTimer(timeInterval: timeInterval, target: self, selector: #selector(TimerTest.timerCall), userInfo: nil, repeats: false) 
    } 

    func timerCall(){ 
     print("Timer executed") 
    } 
} 

print("Code started") 
TimerTest().scheduleTimer(2) 
print("Execution continues as normal") 

import PlaygroundSupport 
PlaygroundPage.current.needsIndefiniteExecution = true 

출력 : :.

인쇄 ("코드가 시작")

TimerTest() scheduleTimer (2)

인쇄 (

이 최소한의 놀이터의 예를 참조하십시오 "정상적으로 실행 됨")