【Swift】TimerをCombineで実装する方法!publishメソッド

この記事からわかること
- SwiftでTimerをCombineで実装する方法
- publishメソッドの使い方
- 任意の秒数ごとに処理を実行するには?
- scheduledTimerとの違いとメリット
\ アプリをリリースしました /
公式リファレンス:Replacing Foundation Timers with Timer Publishers
環境
- Xcode:15.0.1
- iOS:17.1
- Swift:5.9
- macOS:Sonoma 14.1
TimerをCombineで実装する方法
任意の秒数ごとに処理を実行する機能を実装するためにはTimer
クラスのscheduledTimer
メソッドを使用します。
おすすめ記事:【Swift UIKit】ストップウォッチタイマーの実装方法!Timerクラスの使い方
これをCombine
フレームワークのpublisher
で実装することができるようになっています。publisher
として実装することでオペレーター(流れてきたPublisherに処理を施してPublisherを再生成)を活用できるようになりデータの操作がしやすくなります。
Timer.publishメソッド
publisherにするにはTimer
クラスのpublish
メソッドを使用して実装します。
引数にはループで実行したい秒数をTimeInterval
(Double
)型で渡します。作成されたパブリッシャーをアクティブにするにはautoconnect
メソッドを実行します。これでイベントが流れ出すのでsink
メソッドで実行したい処理を定義していきます。
スレッドを変更する
タイマーで実装した処理のスレッドを変更するにはreceive
メソッドの引数にDispatchQueue
クラスを渡します。例えばプライベートキューのバックグラウンドスレッドで実行したい場合は以下のようになります。
オペレーターを使用する
Combineで実装するメリットであるオペレーターを使用して実装する例を見てみます。map
を使用することで流れてくる値を操作して表示させています。。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。