NSTimer没有延迟

时间:2013-06-11 23:07:59

标签: objective-c nstimer

我希望在每个输出结果之间延迟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];
}

1 个答案:

答案 0 :(得分:3)

根据documentation fire“导致接收者的消息被发送到其目标。”这就是它立即开火的原因。

你的计时器也没有预定,因此它永远不会自行开启。

改为创建一个这样的计时器,它创建一个计时器,并在一个语句中安排它。

timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                         target:self
                                       selector:@selector(dealCard)
                                       userInfo:nil
                                        repeats:NO];

完全删除[timer fire]行,因为它会在时间间隔结束后自行启动。