我使用以下代码在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!");
}
问题是我可能需要在4秒钟结束之前取消调用startTimer。有没有办法做到这一点?实际上,我实际上不希望一开始就使用performSelector(似乎很杂乱)。如果只有NSTimer有类似的东西……
…那将是完美的,因为我可以这样称呼:
任何帮助或提示,不胜感激=)
P.S.我在NSObject类引用中找到了名为cancelPreviousPerformRequestsWithTarget的东西。但是,似乎不是可以从此代码运行的地方调用的方法。如果那又回到了正确的轨道,欢迎您的反馈!
最佳答案
请通过SP帖子链接
Stopping a performSelector: from being performed
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(sr)
object:nil];
-performSelector:withObject:afterDelay:的文档为您提供了取消排队执行请求的方法。
关于iphone - 在 'performSelector afterDelay'触发前停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5563319/