我希望在每个输出结果之间延迟1秒钟。下面的代码不是延迟,但处理正确。为什么不在每个dealCard
之间推迟?
- (IBAction)startPause
{
if ([self.deal length]>cardNum) {
timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(dealCard) userInfo:nil repeats:NO];
[timer fire];
}
}
- (void) dealCard{
card.text = [NSString stringWithFormat:@"%i",cardNum+1];
cardTo.text = [self.deal substringWithRange:(NSRange){(cardNum+self.randCut)%[self.cardList count],1}];
cardNum=cardNum + 1;
[self startPause];
}
答案 0 :(得分:3)
根据documentation fire
“导致接收者的消息被发送到其目标。”这就是它立即开火的原因。
你的计时器也没有预定,因此它永远不会自行开启。
改为创建一个这样的计时器,它创建一个计时器,并在一个语句中安排它。
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(dealCard)
userInfo:nil
repeats:NO];
完全删除[timer fire]
行,因为它会在时间间隔结束后自行启动。