私は繰り返し実行する必要があるNSTimer
オブジェクトを持っています。それが呼び出すコードは、最終的に私のアプリケーションの設定を4つの状態に切り替えるものです。状態が変わるたびに、自分のタイマーでインターバルを変更したい。このループは、アプリケーションの存続期間を通して継続する必要があります。ベストプラクティス:セレクタメソッドを呼び出すたびに繰り返しNSTimer間隔を更新する方法
私が知る限り、NSTimer
のinterval
プロパティは更新できません。これは、タイマーコード内で自分の状態を切り替えるたびに、新しいNSTimer
オブジェクトを作成するコードを追加する必要があると考えています。
//Consider that in my containing class, there is an NSTimer property, named myTimer.
//My selector method, used by myTimer
-(void) updateState:(NSTimer *) timer
{
switch (AppState)
{
case state_1:
//Update current state to state_2
[self setMyTimer:[NSTimer scheduledTimerWithTimeInterval:30.0
target:self
selector:@selector(updateState:)
userInfo:nil repeats:NO];
break;
case state_2:
//Update current state to state_3
[self setMyTimer:[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(updateState:)
userInfo:nil repeats:NO];
break;
case state_3:
//Update current state to state_4
[self setMyTimer:[NSTimer scheduledTimerWithTimeInterval:30.0
target:self
selector:@selector(updateState:)
userInfo:nil repeats:NO];
break;
case state_4:
//Update current state back to state_1
[self setMyTimer:[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(updateState:)
userInfo:nil repeats:NO];
break;
}
}
はこれが最適なソリューションですか、それは継続的に実行されるように、すべてのこれらのタイマーの作成は、私のアプリケーションのための任意の形式のトラブルを引き起こす可能性があります:次の実装では、私が考えている何ですか?
また、私のプロジェクトではARCカットがあります。この場合、以前のNSTimer
オブジェクトを破壊する必要がありますか?
これらがタイミング間隔であれば、繰り返し5秒タイマーを使用し、カウンタを使用して状態3と1でより長い間隔を達成してください。 –
@TriPhoenix回答。 – justin