0
1

More than 1 year has passed since last update.

イベント通知~オブザーバパターン~

Posted at

イベント通知とは

イベントの発生箇所となるオブジェクトが、他のオブジェクトにイベントの発生を伝えること。

イベント・・・アプリケーション内で発生するあらゆる事象のこと。

イベント通知のパターン

・デリゲートパターン
・クロージャ
・オブザーバパターン

オブザーバパターン

できること

1対多のイベント通知
-> ex) 特定のオブジェクトが変更されたタイミングで、複数の画面が更新されるケース

構成要素

・サブジェクト >>> オブザーバを管理し、通知を発行する
・オブザーバ >>> 通知を受け取る対象

デメリット

むやみに多用すると、どのタイミングで通知が発生するか予想しづらくなり、処理を追うのが難しくなってしまう。

実装方法

1: 通知を受け取るオブジェクトにNotification型の値を引数に持つメソッドを実装する
2: NotificationCenterクラスに通知を受け取るオブジェクトを登録する
3: NotificationCenterクラスに通知を投稿する

example)

Hoge.swift
import Foundation

class Poster { 
  static let notificationName = Notification.Name("HogeNotification")
  
  func post() { 
    NotificationCenter.default.post(
      name: Poster.notificationName, object: nil
    )
  }
}

class Observer {
  init() {
    NotificationCenter.default.addObserver(
      self,
      selector: #selector(handleNotification(_:)),
      name: Poster.notificationName,
      object: nil
    )
  }

  deinit {
    NotificationCenter.default.removeObserver(self)
  }

  @objc func handleNotification(_ notification: Notification) {
    print("通知を受け取りました")
  }
}

var observer = Observer()
let poster = Poster()
poster.post() // 通知を受け取りました
0
1
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
1