0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SwiftUIのCombineフレームワークについて?

Posted at

ChatGPTと一緒にCombineフレームワークについて少しだけ学習した記録。今後、理解した部分かr追記していければ。

Combine フレームワークについて

Combine は Apple が提供しているリアクティブプログラミングフレームワークで、データの流れやイベントを非同期で扱います。PublisherSubscriber のモデルを使って、イベントの流れを購読(サブスクライブ)し、処理を行うことができます。

  • Publisher: イベントやデータを生成するもの
  • Subscriber: イベントを受け取って処理するもの
  • AnyCancellable: 購読したイベントストリームを後でキャンセルできるトークン

AnyCancellable について

AnyCancellable は、Combine の購読をキャンセルするための型です。購読がキャンセルされると、Publisher からの更新が停止し、メモリリークを防ぐことができます。

購読を開始したとき、AnyCancellable が生成され、これを Set<AnyCancellable> のようなコレクションに保持しておくことで、後で購読をキャンセルできます。コレクションに保持しない場合、購読がすぐにキャンセルされてしまいます。

使用例

購読を設定し、cancellables に保持する例です。

import Combine

class MyViewModel {
    private var cancellables: Set<AnyCancellable> = []

    func setupSubscription() {
        // Publisherを購読する
        NotificationCenter.default.publisher(for: .someNotification)
            .sink { notification in
                print("Received notification: \(notification)")
            }
            .store(in: &cancellables)  // AnyCancellableを保存
    }
}

この例では、通知を購読し、その購読を cancellables に保持しています。store(in:) メソッドによって、購読はキャンセル可能なセットに保存され、必要に応じてキャンセルできます。

まとめ

  • cancellables: Set<AnyCancellable> は、Combine フレームワークで使用する購読(subscription)のキャンセルを管理するためのプロパティです。
  • AnyCancellable によって、購読を途中でキャンセルすることが可能になります。
  • Set<AnyCancellable> は、複数のキャンセル可能な購読を保持しておくために使われます。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?