Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

Swift(iOS)에서 Timer로 일정 간격마다 작업을 반복 실행하는 방법

이번 글에서는 일정한 시간 간격마다 특정 작업을 반복적으로 실행하는 방법을 알아보겠습니다.

예제로는 앱이 실행된 후 경과한 시간(초)을 일정 간격으로 레이블(Label)에 계속 업데이트하며 표시하는 기능을 구현합니다.

iOS에서는 이런 반복 작업을 처리할 때 Timer 클래스를 사용합니다. 그럼 바로 시작해 보겠습니다.

1단계 — 프로젝트 생성

Xcode를 열고 New Project → Single View Application을 선택한 뒤, 프로젝트 이름을 "Timer"로 지정합니다.

2단계 — 스토리보드에 레이블 추가

Main.storyboard 파일을 연 후, 아래 이미지와 같이 화면에 레이블(Label) 하나를 배치합니다.

Swift(iOS)에서 Timer로 일정 간격마다 작업을 반복 실행하는 방법

3단계 — IBOutlet 연결

화면 하단에 배치한 레이블에 @IBOutlet을 연결하고, 이름을 timerLabel로 지정합니다.

4단계 — 변수 선언

레이블에는 앱이 실행된 이후 경과한 초(seconds)를 표시할 예정입니다. 이를 위해 뷰 컨트롤러에 다음과 같이 두 개의 변수를 선언합니다.

var timeLaunched: Int = 0
var timer: Timer?

5단계 — 레이블을 갱신하는 함수 작성

레이블의 텍스트를 업데이트하는 함수를 하나 만듭니다. 이 함수는 이후 일정한 간격으로 반복 호출됩니다.

@objc func updateLabel() {
    timerLabel.text = " Time Launched = \(timeLaunched) Seconds "
    timeLaunched += 1
}

위 코드를 보면 함수가 호출될 때마다 timeLaunched 값을 1씩 증가시키고, 그 값을 레이블에 표시하는 것을 알 수 있습니다.

6단계 — 타이머 초기화 및 시작

이제 타이머를 초기화하고 실행합니다. ViewControllerviewDidLoad에서 타이머를 생성하고, updateLabel 함수를 일정 간격으로 호출하도록 설정합니다.

여기서는 1초마다 함수를 호출하도록 했지만, 필요에 따라 간격은 자유롭게 조절할 수 있습니다.

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    updateLabel()
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(ViewController.updateLabel)), userInfo: nil, repeats: true)
}

핵심은 Timer.scheduledTimer를 사용해 타이머를 생성하고, repeats 파라미터를 true로 설정한 부분입니다. 이렇게 하면 updateLabel 함수가 매초 자동으로 호출됩니다.

실행 결과 확인

앱을 빌드하고 실행하면, 아래 화면과 같이 레이블이 1초마다 갱신되는 것을 확인할 수 있습니다.

Swift(iOS)에서 Timer로 일정 간격마다 작업을 반복 실행하는 방법

이처럼 Timer를 활용하면 카운트다운, 주기적인 데이터 갱신, 애니메이션 제어 등 다양한 반복 작업을 손쉽게 구현할 수 있습니다.