내가 다음 코드를 사용하여 4 초 지연 후 반복 NSTimer을 시작 발사하기 전에 :는
- (void)viewDidLoad {
[self performSelector:@selector(startTimer) withObject:self afterDelay:4];
}
- (void)startTimer {
NSTimer *mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doSomething) userInfo:nil repeats:YES];
}
- (void)doSomething {
NSLog(@"What up!");
}
문제는 내가있는 사초 전에 호출되는가 startTimer을 취소해야 할 수 있습니다입니다 쪽으로. 이 일을하는 방법이 있습니까? 사실 처음에는 performSelector를 사용하지 않는 것이 좋을 것입니다. 단 NSTimer이 라인을 따라 무언가 ...
... 그 완벽 것 :NSTimer *을 MyTimer = 있었다면 [1.0 afterDelay : 4.0 대상 : 자기 선택기 : @ 선택기 (해봐요) 유저 정보 : 반복 닐 : NSTimer scheduledTimerWithTimeInterval를 YES] ; 난 그냥 다음 호출 할 수 있기
[MyTimer로의 무효화를]
어떤 도움이나 조언은 많은 감사합니다 =)
P.S. NSObject 클래스 참조에서 cancelPreviousPerformRequestsWithTarget이라는 것을 발견했습니다. 그러나이 코드가 실행되는 곳에서 호출 할 수있는 메서드는 아닌 것 같습니다. 그것이 올바른 방향으로 돌아 오면 귀하의 의견을 환영합니다! 수행 대기중인 요청을 취소하는 방법에 포인트를 당신이 : withObject : afterDelay
가능한 중복 중지 할 때 호출 [A performSelector 중지를 : 수행되는 (http://stackoverflow.com/questions/5498071/stopping-a- performselector-from-being-performing) 수행 – Vladimir
반복 타이머를 끄기 위해 비 반복 타이머를 사용할 수 있습니다. –
좋은 선택 인 Nick. 훨씬 더 깨끗한 옵션입니다. 감사! 안타깝게도 귀하의 의견을 답변으로 표시 할 수는 없습니다. 나는 가장 가까운 다음에 – Timbo