투케이2K

8. (ios/swift) timer 타이머 사용해 실시간 반복 작업 수행 실시 본문

IOS

8. (ios/swift) timer 타이머 사용해 실시간 반복 작업 수행 실시

투케이2K 2021. 10. 16. 22:55

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[소스 코드]

    /*
    [요약 설명]
    1. Timer.scheduledTimer : 실시간 반복 작업을 수행할 수 있습니다
    2. timeInterval : 반복 주기 시간 설정
    3. target: self : 현재 클래스
    4. selector : 반복 작업 수행 함수
    5. userInfo : 타이머 속 함수에 값 전달
    6. repeats : 반복 여부 설정
    */
    
    // [전역 변수 선언 실시]
    var intCount = 1
    
    // [테스트 메인 함수 정의 실시]
    func testMain(){
        print("")
        print("===============================")
        print("[Program Start]")
        print("===============================")
        print("")
        
        // 실시간 반복 작업 시작 실시
        startTimer()
    }
    
    
    // [실시간 반복 작업 시작 호출]
    var timer : Timer?
    func startTimer(){
        print("")
        print("===============================")
        print("[startTimer : start]")
        print("===============================")
        print("")
        // [타이머 객체 생성 실시]
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerCallback), userInfo: nil, repeats: true)
    }
    // [실시간 반복 작업 수행 부분]
    @objc func timerCallback() {
        print("")
        print("===============================")
        print("[timerCallback : run]")
        print("[intCount : \(intCount)]")
        print("===============================")
        print("")
        
        // [처리할 로직 작성 실시]
        displayText.text = String(intCount) // UI 카운트 값 표시 실시
        intCount += 1 // 1씩 카운트 값 증가 실시
        if intCount > 5 { // 카운트 값이 5인 경우
            stopTimer() // 타이머 종료 실시
            showAlert(tittle: "카운트 알림", content: "타이머 종료", okBtb: "확인", noBtn: "") // 팝업창 호출
        }
    }
    // [실시간 반복 작업 정지 호출]
    func stopTimer(){
        print("")
        print("===============================")
        print("[stopTimer : end]")
        print("===============================")
        print("")
        // [실시간 반복 작업 중지]
        if timer != nil && timer!.isValid {
            timer!.invalidate()
        }
    }

[결과 출력]


 

반응형
Comments