NSTimer在NSThread中不起作用?

时间:2012-03-30 02:34:30

标签: ios nstimer nsthread

非常简单地使用NSThread和NSTimer,如下所示。当用户点击一个按钮时,我希望每秒打印@“aaaaa”,但@“aaaaa”只打印一次?似乎NSTimer不起作用......帮助

//this method is connected to 'run' button in IB
- (IBAction)begin1:(id)sender {
    [NSThread detachNewThreadSelector:@selector(thread1) toTarget:self withObject:nil];
}

-(void)thread1{
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 
                                                      target:self
                                                    selector:@selector(aaa)
                                                    userInfo:nil
                                                     repeats:YES];
    [timer fire];
}

-(void)aaa{
    NSLog(@"aaaaa");
}

2 个答案:

答案 0 :(得分:0)

您没有保留计时器。 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats返回一个自动释放的NSTimer,因此如果你想确保它运行直到你告诉它停止,你应该将它保留在某个地方。

答案 1 :(得分:0)

对于运行循环,计时器不是使其保持运行的有效源。据推测,你的运行循环看到它无关,然后退出,使其计时器失效 - 如果您的实际实现是按照写入的那样将是这种情况。因此,您需要确保辅助线程的运行循环继续,以便计时器继续触发,因为线程只是退出并立即使用计时器。