1

私は NSTimer を使用して、特定のタイマー間隔 (通常は 10 分以上) でメソッドを呼び出していますが、場合によって異なります。残り時間を示すタイマー ラベルがあり、タイマーの分の値が更新されるたびにそのラベルを更新する最善の方法を見つけようとしています。私が考えることができる唯一の2つの方法は、少しハッキーに感じる...

  1. メソッドを呼び出すまでの時間を管理するタイマーと、ラベルを更新するために毎分再作成される別のタイマーの 2 つのタイマーを使用します。
  2. 1 分ごとに再作成される 1 つのタイマーを使用し、経過時間を手動で追跡して、いつメソッドを呼び出すかを把握します。

他のアイデアはありますか?

あなたの知恵に感謝します!

4

2 に答える 2

2

単一でそれを行うことができますNSTimer(これはオプション#2として数えられますが、わずかに拡張されていると思います):

  • 将来呼び出されるメソッドをスケジュールするtargetTime場合は、メソッドを実行する必要がある時間を計算します。
  • NSTimerの早い方でセットを開始します。now + 1 minutetargetTime
  • タイマーが起動したら、現在の時刻を と比較しtargetTimeます。そこにいる場合は、ターゲット メソッドを実行します。それ以外の場合は、タイマーのスケジュールを変更してnow + 1 minuteくださいtargetTime
于 2013-09-16T03:30:34.977 に答える
0

タイマーを無効にし (既に存在する場合)、破棄し、新しい期間で新しいタイマーを作成してスケジュールするカスタム セッターを使用して、タイマー期間の KVO 準拠のプロパティを実装します。

(または、タイマーを所有する別のオブジェクトからプロパティを観察します。一方のオブジェクトは時間間隔を保持し、もう一方はタイマーを保持します。その後、合成されたセッターを保持できます。オブザーバー メソッドでタイマーを作成/再作成します。)

次に、フィールドを所有するコントローラーでそのプロパティを観察し、プロパティが変更されるたびにフィールドを更新します。

于 2013-09-16T14:20:52.750 に答える