所以我有这段代码:
int i = 3;
dispatch_async(queue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
for (;;)
{
t1 = [NSTimer scheduledTimerWithTimeInterval:i target:self selector:@selector(updateUI) userInfo:nil repeats:NO];
}
});
});
所以我正在做的是我在游戏中每3秒更新一次UI,但我希望能够改变计时器关闭的时间间隔,所以我使用了一个无限循环的计时器在里面。我的问题是,当我使用主队列时,它不会执行异步,但我需要使用主队列来更新UI,所以我不知道该怎么做。
答案 0 :(得分:2)
如果在主线程中创建NSTimer,则在主线程中调用选择器。
- (void)updateTimer
{
// destroy timer
[t1 invalidate];
// start new timer
t1 = [NSTimer scheduledTimerWithTimeInterval:i target:self selector:@selector(updateUI) userInfo:nil repeats:NO];
}
- (void)updateUI
{
......
[self updateTimer];
}
需要在启动应用程序中调用[self updateTimer]
,以开始更新UI。