0

NSLog(@"Call me");私はその体にちょうどあるボイド機能を持っています。

私はそれを使用して10秒ごとに私のビューでそれを呼び出します

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES];

しかし、5回の反復後に停止させたいと思います。しかし、それは無限大になります。どうやってやるの?

4

4 に答える 4

2

1つのカウンターを取得し、メソッドが呼び出されるたびにそれをインクリメントし、5をカウントしてから、以下のコードを使用してタイマーを無効にする必要があります。

[timer invalidate];
于 2012-08-23T12:11:15.323 に答える
2

1)0から5まで増加するグローバル変数を保持します。

  int i = 0;

2)この変数をタイマー関数内に追加します。

-(void) yourFunction:(NSTimer*)timer{
  //do your action

  i++;
  if(i == 5){
     [timer invalidate];
  }
}

3)タイマーを作成する場合

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 
                 target:self 
                 selector:@selector(yourMethod:) // <== see the ':', indicates your function takes an argument 
                 userInfo:nil 
                 repeats:YES];
于 2012-08-23T12:11:24.980 に答える
1

現在のループからタイマーを破棄するには、を呼び出す必要があります[timer invalidate];

5つのオカレンスを判別するには、変数を維持し、そのカウントを毎回インクリメントする必要があります。5に等しい場合は、invalidateメソッドを呼び出します。

于 2012-08-23T12:11:42.967 に答える
1

まず最初に、を宣言して宣言する必要がありintます。そうすればNSTimer *timer、それを停止できます。

@interface AppDelegate : UIViewController {
    int myInt;
    NSTimer *timer;
}

開始するNSTimerには、コードを少し変更する必要があります。

timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES];

void関数内で、コードが5回の反復後に実行されているかどうかを確認するための検証を行うことができます。

- (void)myVoid{
    NSLog(@"Call Me");

    if (myInt == 5) {
        [timer invalidate];
        timer = nil;
    }

    myInt++;
}
于 2012-08-23T12:11:50.237 に答える