2012-03-21 17 views
2

私はマルチビューアプリケーションで作業しています。ビューの1つはテーブルビューです。各セルにはストップウォッチがあります。私はストップウォッチにNSTimerを使用する予定です。ユーザーがビューを切り替えてから後で戻ってきてもタイマーが正常に動作するようにマルチスレッドを実装する必要はありますか? 私は研究をしましたが、ほとんどのチュートリアルでは1つのNSTimerを1つのビューでカバーしています。私はタイマーが動いている間、ユーザーがインタフェース、ナビゲーションなどを使用している間に他のことをやり遂げることができるようにしたいと思っています。Placing an NSTimer in a separate thread誰かがタイマーのために別のrunloopが必要だと言いました。私のケースでは、各タイマーごとに1つのランループが必要ですか?それはお勧めですか?パフォーマンスの問題はありますか?iOS:同じビューを使用する複数のNSTimerインスタンス - マルチスレッドを使用する必要がありますか?

ありがとうございます!

+0

複数のストップウォッチを同時に実行しますか? –

+0

NSTimersはメインスレッド(UI)に影響しません。だから、あなたは好きなだけ多くのNSTimersを使うことができます。 – basvk

+0

@KyleRosenbluthはい複数のストップウォッチを同時に実行します。それぞれが異なる活動を追跡します。 –

答えて

2

1回の実行ループはうまくいくはずです。あなたのインターフェースは依然として反応します。

タイマーは正確であることは保証されません。それらは、他のものがどれくらい同じループにあるかによって影響を受けます。タイマーを使って表示を更新するが、時間を実際に測定するのはOKです。停止時計を開始するときにNSDateを設定し、表示タイマーが表示を更新するたびに現在の日付とその開始日を比較します。

NSTimerを使用してディスプレイを更新する必要があるので、ストップウォッチごとに1つの代わりに、実行中のすべてのストップウォッチを更新する一般的なディスプレイ更新タイマーを使用できますか?

+0

あなたの答え@ダンケルありがとう!私は今夜​​、そして次の日にこれを実施するつもりです。私はあなたの投稿を続けます。私はすべてのストップウォッチを更新する1タイマーのアイデアが気に入っています。 Timerが起動するたびに、すべてのストップウォッチをループすることができます。ステータスが実行中であれば、表示を更新できます。実際には素晴らしい提案です。しかし、私は正確さについて混乱しました。あなたはそれを使って時間を追跡してはいけないと言った。しかし、ストップウォッチはそれを正確に行います。タイマーが鳴ったら、私はストップウォッチを1秒増分する必要があります。これについてどうすればいいですか?ありがとう –

+0

私はちょうどあなたがNSDateの意味を納得させました。それはまさに私のアプリですでに実装したものです。私は各ストップウォッチのオカレンスオブジェクトを持っていて、属性としてSTART_TIMEを持っています。現在の時間とSTART_TIMEを使用して、私は簡単にTIMEINTERVALをコンピュータで操作できます!ありがとう!! –

+0

Dancreekの魅力のように動作します。ありがとうございました !! –

関連する問題