-1

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

1 回答 1

3

根据文档 fire“导致接收者的消息被发送到其目标”。这就是为什么它会立即发射。

您的计时器也没有安排,因此它永远不会自行触发。

像这样创建你的计时器,它会创建一个计时器,并将它安排在一个语句中。

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

并完全移除[timer fire]线路,因为它会在时间间隔结束后自行触发。

于 2013-06-11T23:16:14.693 回答