1. ホーム
  2. objective-c

バックグラウンド・スレッドでNSTimerを作成するには?

2023-10-28 04:10:24

質問

1秒ごとに実行する必要のあるタスクがあります。 現在、私はNSTimerを1秒ごとに繰り返し発射しています。 バックグラウンドスレッド (非UIスレッド) でタイマーを起動させるにはどうすればよいですか。

メインスレッドで NSTimer を起動させ、NSBlockOperation を使用してバックグラウンドスレッドをディスパッチすることができましたが、これを行うより効率的な方法があるかどうか疑問に思っています。

どのように解決するのですか?

タイマーは、すでに実行されているバックグラウンドのスレッドで動作する実行ループにインストールする必要があります。そのスレッドは、タイマーを実際に起動させるために、実行ループを実行し続ける必要があります。また、そのバックグラウンド スレッドが他のタイマー イベントを起動し続けられるようにするには、とにかく実際にイベントを処理するために新しいスレッドを生成する必要があります (もちろん、行っている処理にかなりの時間がかかると仮定して)。

その価値があるかどうかは別として、Grand Central Dispatch を使用して新しいスレッドを生成してタイマー イベントを処理するか、または NSBlockOperation を使用して新しいスレッドを生成してタイマー イベントを処理することは、メイン スレッドの完全に合理的な使用方法だと思います。