イベント通知とは
イベントの発生箇所となるオブジェクトが、他のオブジェクトにイベントの発生を伝えること。
イベント・・・アプリケーション内で発生するあらゆる事象のこと。
イベント通知のパターン
・デリゲートパターン
・クロージャ
・オブザーバパターン
オブザーバパターン
できること
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() // 通知を受け取りました