Observerパターンを実現するための仕組みとして、NotificationCenterがあります。
イベントの発生を、一度に多くに知らせることができます。
Sender(イベント通知者)はObserver(イベント観察者)のことを知る必要がありません。
昨今は、NotificationCenterを使わずともObserverパターンを実現するライブラリ等がありますので、アプリで積極的に使われることは少なくなったように思います。 ただ、プラットフォーム由来のイベント通知を受ける際は今でも用いられることがあります。
例えば、UIApplicationDelegateがNotificationCenterを経由して提供するイベントはいくつもあります。
※ NSNotification.Name
を探してみましょう
NotificationCenterはSenderとObserverの仲介役として機能します。
SenderとObserverは互いに知る必要がありません。
最低限NSNotification.Name
のみ知っていればイベントを受け取ることができます。
なので、多用しすぎるとコードが追い辛くなる傾向になるように筆者は感じます。
NotificationCenterと同様にObserverパターンを実現する仕組みとして、KVO(Key Value Observing)があります。
KVOはオブジェクトのプロパティの値を監視することができます。
KVOも昨今は使われる機会は減ったように思います。参考まで。
Using Key-Value Observing in Swift
- NotificationCenterを利用して、アプリがバックグラウンドからフォアグラウンドに戻ってきたときに、天気予報を更新する
- アラートが表示された状態での動きも確認してみましょう
下の図の赤枠の部分の矢印の遷移がバックグラウンドからフォアグラウンドに戻ってきたときになります。