我想在每个输出结果之间延迟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];
}
根据文档fire
"使接收方的消息发送到其目标。"这就是为什么它会立即开火。
你的计时器也没有被安排,所以它永远不会自己触发。
像这样创建定时器,这样创建一个定时器,并在单个语句中调度它。
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(dealCard)
userInfo:nil
repeats:NO];
并完全删除[timer fire]
线,因为它会在时间间隔结束后自行开火