2011-07-21 5 views
0

iPhoneからルータをポーリングしています。タイマーは、60秒ごとに起動します。私はViewDidLoadでタイマーを開始しています。タイマーをオンにしてフラグを使用して実行のオン/オフを制御することに何か問題がありますか?

最初にフラグpollingONがFALSEに設定されています。

すると、タイマーが起動、それはmyTimerFiredMethodを呼び出し、その後、小切手、別にナノ秒またはCPU時間の2、このような行為に何かを無駄にすることから

if (self.pollingON) { 
    self.pollingON = FALSE ; 
    // run the polling code 
    self.pollingON = TRUE ; 
} 

答えて

2

使用していないにもかかわらず実行中のタイマーは、バッテリ寿命の無駄です。それはまた、原因のないタイマーを実行する、奇妙なデザインパターンです。

また、ポーリングを有効にした場合、最悪の場合、更新前に約60秒待たなければなりません。

このように実装することはお勧めしません。代わりに、ポーリングがオフのときにタイマーを無効にし、ポーリングがオンのときに新しいタイマーを作成します。

+0

ボタンをクリックしてポーリングをオンにすると、すぐにポーリングルーチンも呼び出されます。どのくらいのバッテリー寿命は1分に1回発生するタイマーによって使用されると思いますか?また、このアプリの唯一の目的は、ルータをポーリングすることです。 –

+0

片道の男は正しいです。それはリソースの問題ではありませんが(この特定のケースでは)、より正確なデザインパターンで始めるのはいかがですか?特に実装するために余分な時間が5分かかる場合は特にそうですか? – sosborn

+1

デザインの反パターンの偉大な名前 - 原因なしのタイマー – Monolo

関連する問題