수색…


타이머 만들기

이렇게하면 5.0 초 안에 self 에서 doSomething 메소드를 호출하는 타이머가 작성됩니다.

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

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

타이머 무효화

[timer invalidate];
timer = nil;

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

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

nil 을 설정하면 실행 여부를 확인하는 데 도움이됩니다.

if(timer) {
    [timer invalidate];
    timer = nil;
}

//Now set a timer again.

수동으로 타이머 실행

[timer fire];

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

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

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

타이머에 정보 저장

타이머를 만들 때 timer로 호출하는 함수에 전달할 정보를 포함하도록 userInfo 매개 변수를 설정할 수 있습니다.

함수에서 타이머를 매개 변수로 사용하면 userInfo 속성에 액세스 할 수 있습니다.

NSDictionary *dictionary = @{
                             @"Message" : @"Hello, world!"
                            }; //this dictionary contains a message
[NSTimer scheduledTimerWithTimeInterval:5.0
     target:self 
     selector:@selector(doSomething) 
     userInfo:dictionary
     repeats:NO]; //the timer contains the dictionary and later calls the function

...

- (void) doSomething:(NSTimer*)timer{
    //the function retrieves the message from the timer
    NSLog("%@", timer.userInfo["Message"]);
}


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