-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 に答える