수색…


매개 변수

매개 변수 세부
interval 타이머를 울리는 것을 기다리는 시간 (초). 또는 타이머를 반복 할 때 발사 사이의 시간.
target selector 를 호출 할 객체
selector Swift에서, target 에서 호출 할 메소드를 지정하는 Selector 객체
repeats false 인 경우 타이머를 한 번만 시작합니다. true , interval 초마다 타이머를 작동시킵니다.

비고

NSTimer 사용하면 지정된 시간이 지나면 대상에게 메시지를 보낼 수 있습니다.

타이머 만들기

그러면 5 초 안에 selfdoSomething 메소드를 호출하는 타이머가 생성됩니다.

빠른

let timer = NSTimer.scheduledTimerWithTimeInterval(5,
                               target: self,
                             selector: Selector(doSomething()),
                             userInfo: nil,
                              repeats: false)

스위프트 3

 let timer = Timer.scheduledTimer(timeInterval: 1,
                                        target: self, 
                                      selector: #selector(doSomething()), 
                                      userInfo: nil, 
                                       repeats: true)

목표 -C

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];

반복을 false/NO 설정하면 타이머가 한 번만 실행되기를 원합니다. true/YES 설정하면 수동으로 무효화 될 때까지 5 초마다 실행됩니다.

수동으로 타이머 실행

빠른

timer.fire()

목표 -C

[timer fire];

fire 메서드를 호출하면 NSTimer가 일반적으로 일정에서 수행했던 작업을 수행합니다.

반복하지 않는 타이머 에서는 타이머 가 자동으로 무효화됩니다. 즉 호출이다 fire 시간 간격이 하나의 호출이 발생할 것까지 전에.

반복 타이머 에서 이것은 보통 일정을 방해하지 않고 단순히 조치를 호출합니다.

타이머 무효화

빠른

timer.invalidate()

목표 -C

[timer invalidate];

타이머가 작동을 멈 춥니 다. 타이머가 작성된 스레드에서 호출되어야합니다. Apple 노트를 참조하십시오.

이 메시지는 타이머가 설치된 스레드에서 보내야합니다. 다른 스레드에서이 메시지를 보내면 타이머와 관련된 입력 소스가 실행 루프에서 제거되지 않아서 스레드가 올바르게 종료되지 않을 수 있습니다.

참고 : 일단 타이머가 무효화되면, 동일한 무효 타이머를 발사하는 것이 불가능합니다. 대신 무효화 된 타이머를 다시 초기화하고 발사 방법을 트리거해야합니다.

타이머 빈도 옵션

반복 된 타이머 이벤트

빠른

class ViewController: UIViewController {
 
    var timer = NSTimer()
    
    override func viewDidLoad() {
        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
    }

    func timerMethod() {
        print("Timer method called")
    }

    func endTimer() {
        timer.invalidate()
    }
}

스위프트 3

class ViewController: UIViewController {
     
        var timer = Timer()
        
        override func viewDidLoad() {
            Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: true)
        }
    
        func timerMethod() {
            print("Timer method called")
        }

        func endTimer() {
            timer.invalidate()
        }
    }

원하는 경우 수동으로 무효화해야합니다.

빠른

반복되지 않는 지연 타이머 이벤트

NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: false)

스위프트 3

 Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: false)

타이머는 실행 시간 3 초 후에 한 번 해고됩니다. 일단 해고되면 자동으로 무효화됩니다.

타이머를 사용한 데이터 전달

타이머 트리거로 일부 데이터를 전달하려는 경우 userInfo 매개 변수를 사용하여이를 수행 할 수 있습니다.

다음은 Timer에서 트리거 된 메서드에 데이터를 전달하는 방법에 대한 간단한 아이디어를 제공하는 간단한 방법입니다.

[ 스위프트 3 ]

Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(iGotCall(sender:)), userInfo: ["Name": "i am iOS guy"], repeats:true)

[ 목표 -C ]

NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                    selector:@selector(iGotCall:)
                                                    userInfo:@"i am iOS guy" repeats:YES];

위의 코드 행은 ["Name": "i am iOS guy"]userInfo 합니다. 이제 iGotCall 이 호출 될 때 전달 된 값을 아래의 코드 스 니펫으로 얻을 수 있습니다.

[ 스위프트 3 ]

func iGotCall(sender: Timer) {
        print((sender.userInfo)!)
    }

[ 목표 -C ]

- (void)iGotCall:(NSTimer*)theTimer {
    NSLog (@"%@", (NSString*)[theTimer userInfo]);
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow