수색…
매개 변수
매개 변수 | 세부 |
---|---|
interval | 타이머를 울리는 것을 기다리는 시간 (초). 또는 타이머를 반복 할 때 발사 사이의 시간. |
target | selector 를 호출 할 객체 |
selector | Swift에서, target 에서 호출 할 메소드를 지정하는 Selector 객체 |
repeats | false 인 경우 타이머를 한 번만 시작합니다. true , interval 초마다 타이머를 작동시킵니다. |
비고
NSTimer
사용하면 지정된 시간이 지나면 대상에게 메시지를 보낼 수 있습니다.
타이머 만들기
그러면 5 초 안에 self
의 doSomething
메소드를 호출하는 타이머가 생성됩니다.
빠른
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]);
}