当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函数结束后。
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
Timer和主程序是属于同一个线程的,并不相当于起了一个线程~~你的这个线程已经在while(1)句阻塞了,所以不会走到那里BTW: Timer不是新起的一个线程,记住这个就行了
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消