2010-11-19 14 views
2

.hファイルで宣言し、その後メソッドの中で設定したNSTimerについて質問があります。しかし、このメソッドは1つより多くのメソッドと呼ばれるので、NSTimerは同じ名前で複数回実行されます。Objective-c iPhone NSTimerのユニークな識別子

私の質問は、タグ/ IDなどを設定して、NSTimerを正しいタグ/ IDで無効にすることができるかどうかです。

ありがとうございました!

答えて

3

MainViewController.mが、以来、ここに私のソリューションですこの同じタイマーを無効にするには、そのuserInfo文字列を確認してください。

// invalidate timer 
if ([[timer userInfo] isEqual:@"timer1"]) 
    [timer invalidate]; 
+0

** [timer userInfo] **戻り値なしViewController。 –

1

作成して実行しているNSTimerへの参照を保存するだけで、このリファレンスを使用するだけです。

1

複数のNSTimerを作成していて、それらを個別に処理する必要がある場合は、それらを独立して保存する必要があります。固定数がある場合は、十分な数の変数を作成して適切な名前を付けるだけです。または、配列内に保持します(インデックスでキー入力します)。または、文字列名をキーに辞書に入れます。

上記のフレーズ(「同じ名前で実行されています」)は多少私に関係しています。タイマーには、慎重なメモリ処理要件があります。幅広いデザインのヘルプが必要な場合は、自分の質問を編集して、自分が行っていることの詳細を確認します。

1

よろしくお願いします。次のコードがあります。しかし、一意のID /タグを設定する方法はありませんので、後でタイマーを無効にすることができます。これは、タイマーメソッドが複数のものを呼び出すためです。

// set timer 
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 
             target:self 
             selector:@selector(whateverMethod) 
             userInfo:@"timer1" 
             repeats:YES]; 

へ:私は今日と同じニーズを持っていた(そのアニメーション画像/ボタン用)この質問はずっと前に頼まれた

- (void)timerMethod { 

    NSTimer *daTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(animations:) userInfo:nil repeats:YES]; 

} 
関連する問題