非常简单地使用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");
}
答案 0 :(得分:0)
您没有保留计时器。 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats
返回一个自动释放的NSTimer,因此如果你想确保它运行直到你告诉它停止,你应该将它保留在某个地方。
答案 1 :(得分:0)
对于运行循环,计时器不是使其保持运行的有效源。据推测,你的运行循环看到它无关,然后退出,使其计时器失效 - 如果您的实际实现是按照写入的那样将是这种情况。因此,您需要确保辅助线程的运行循环继续,以便计时器继续触发,因为线程只是退出并立即使用计时器。