なおさんのブログ

iOSエンジニアのブログのはずがいろいろ書いてます。

iOS13から使えるようになったCombineを使ってみる

はじめに

私が担当しているアプリも近々iOS12以降対応だったのがiOS13以降対応になる。 いままで使えなかったCombine関連もいよいよ使うことができるので調べてみた。

サンプル実装

とりあえずviewDidLoad()に追加して実行してみました。

import UIKit
import Combine

class ViewController: UIViewController {

    var cancellable: AnyCancellable? = nil

    override func viewDidLoad() {
        super.viewDidLoad()

        let publisher = CurrentValueSubject<Int, Never>(1)
        cancellable = publisher.sink { a in
            print(a)
        }

        publisher.value = 2
        publisher.value = 3
    }
}

結果

1
2
3

publisherに値をセットするたびに、sinkの処理が実行されています。

さいごに

今回はほんの一部だけ調査しました。 いままでViewModelの変更をViewに伝えるのにRxSwiftを使っていましたが、その処理はこちらに置き換えできそうです。 今後時間ができたらもっと深く調査しようかと思います。

参考資料

qiita.com

zenn.dev

funlife-taishi.com