是不是就是说,只要创建Timer的线程不结束,Timer就不会被触发呢?求指教

当NSTimer的回调函数被调用的时候,程序是创建一个新的线程吗?我写了以下一段测试代码,可是回调函数一直无法被触发:- (void)updateInterface:(id)sender{ a=[a stringByAppendingString:@"add string\n"]; [myTextView setStringValue:a]; return; }- (IBAction)getButtonPushed:(id)sender { NSTimer* renderTimer = [[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateInterface:) userInfo:nil repeats:YES]retain]; while(1){}}在调试的时候,程序走到while(1){}就无限制循环。而Timer却永远没有被触发,就是说updateInterface函数一直没有被调用。当我把while(1){}这行注销掉,Timer就会被触发,触发的时间是在getButtonPushed函数结束后。

慕田峪9158850
浏览 128回答 1
1回答

小怪兽爱吃肉

Timer和主程序是属于同一个线程的,并不相当于起了一个线程~~你的这个线程已经在while(1)句阻塞了,所以不会走到那里BTW: Timer不是新起的一个线程,记住这个就行了
打开App,查看更多内容
随时随地看视频慕课网APP