我使用以下代码在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/

10-11 22:30