ObjectiveC)NSTimer 특징

NSTimer

Featured image

@

NSTimer는 쓰레드로 작동하는 것이 아닌 쓰레드 안에 있는 런루프(runLoop)에 스케줄을 추가하여 TimerInterval에 걸린 시간 마다 타이머의 블록문 또는 SEL을 작동한다.

꼭 메인쓰레드에만 다는 것이 아닌 글로벌쓰레드의 런루프에 스케줄을 추가할 수 있다.

타이머의 블록문 또는 SEL구문이 끝나지 않는다면 다른 타이머가 작동하지 않을 수 있다. 따라서 타이머의 블록문 또는 SEL은 끝나도록 작성해야한다.

NSTimer는 실시간 타이머가 아니라는 점이다. 만약 반복되는 주기를 가진 타이머의 특정 작업이 있다고 할 때,

런루프는 단지 그 타이머만을 감시하는 것이 아니라 아주 많은 종류의 입력을 처리해야 하기 때문에 이를 놓치는 경우가 있을 수 있다.

따라서 NSTimer를 통해 이뤄지는 지연된 작업이나, 반복작업은 실제 시간과 다소 차이가 있을 수 있으며, 경우에 따라서는 상당히 큰 차이를 발생할 수 있다.