Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 2.72 KB

NotificationCenter.md

File metadata and controls

41 lines (29 loc) · 2.72 KB

NotificationCenter

Observerパターンを実現するための仕組みとして、NotificationCenterがあります。
イベントの発生を、一度に多くに知らせることができます。

Sender(イベント通知者)はObserver(イベント観察者)のことを知る必要がありません。

NotificationCenter

昨今は、NotificationCenterを使わずともObserverパターンを実現するライブラリ等がありますので、アプリで積極的に使われることは少なくなったように思います。 ただ、プラットフォーム由来のイベント通知を受ける際は今でも用いられることがあります。

例えば、UIApplicationDelegateがNotificationCenterを経由して提供するイベントはいくつもあります。
NSNotification.Nameを探してみましょう

NotificationCenterはSenderとObserverの仲介役として機能します。
SenderとObserverは互いに知る必要がありません。
最低限NSNotification.Nameのみ知っていればイベントを受け取ることができます。
なので、多用しすぎるとコードが追い辛くなる傾向になるように筆者は感じます。

KVO

NotificationCenterと同様にObserverパターンを実現する仕組みとして、KVO(Key Value Observing)があります。
KVOはオブジェクトのプロパティの値を監視することができます。
KVOも昨今は使われる機会は減ったように思います。参考まで。
Using Key-Value Observing in Swift

アプリがフォアグラウンドにきたとき天気予報を更新する

課題

  • NotificationCenterを利用して、アプリがバックグラウンドからフォアグラウンドに戻ってきたときに、天気予報を更新する
  • アラートが表示された状態での動きも確認してみましょう

下の図の赤枠の部分の矢印の遷移がバックグラウンドからフォアグラウンドに戻ってきたときになります。

scene-state

Managing your app’s life cycle

附録

関連ワード・動画索引(熊谷さんのやさしい Swift 勉強会)