我试图每隔x个时间执行一段代码,但似乎我正在做的就是在那段时间内执行它。这是我的代码块。
while (TRUE) {
NSTimer *countDown = [NSTimer
scheduledTimerWithTimeInterval:(x)
target:self
selector:@selector(timerHandle)
userInfo:nil
repeats:YES];
}
关于如何做的任何想法?
答案 0 :(得分:4)
如上所述,这是一个无限循环,每次循环迭代都会创建NSTimer
。
在没有while
循环的情况下尝试一下。这应该导致[self timerHandle]
在单个后台线程/计时器的间隔x
上调用{{1}}。 Apple指南使用NSTimer(包括其他人指出,如何正确停止您的定时任务)是here。
答案 1 :(得分:4)
试试这个:(它会每5秒调用executeMethod
)
if (![NSThread isMainThread]) {
dispatch_async(dispatch_get_main_queue(), ^{
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(executeMethod)
userInfo:nil
repeats:YES];
});
}
else{
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(executeMethod)
userInfo:nil
repeats:YES];
}
使用executeMethod
方法编写要执行的代码。希望这有助于.. :))