【Xcode(Swift)】「NotificationCenter」解説

Xcode(Swift/Objective-C)における、技術メモです。
自身の脳内整理・備忘録を兼ねてメモしています。
今回は「NotificationCenter」についてです。

※もし内容に誤りなどございましたら、下部「コメント」欄にいただけるとありがたいです。

概念

「NotificationCenter」とは、登録されたオブザーバーへブロードキャストで連携できる通知メカニズムです。

「②必要な部位で発生させる(post)」は、キーボードが画面に表示された時(UIResponder.keyboardWillShowNotification)のように、イベント発生をトリガに「③処理A」を実行するような使い方ができます。

(むしろ、そういったケースに使うことが多い?)

 

仕様

ドキュメンテーション、関連ページ

Qiita

今回、あるViewControllerから別のViewControllerに処理を伝搬したいものがあり、 調べたところ、…

確認バージョン

Xcode:11.3.1
Swift:5.1.3

Swift 3にて、NotificationCenterが改良されています。(旧:NSNotificationCenter)」

使い方

【Swift】(3.0以降)

// NotificationCenterのインスタンスを作成
let nc = NotificationCenter.default


// NotificationCenterに定義を登録
// 下記例は
/ /Notification名は「TestNotification」
// 通知された時(送信された時)に起動する処理は「ncAction」
nc.addObserver(self, selector: #selector(self.ncAction), name: Notification.Name(rawValue:"TestNotification"), object: nil)
// デフォルトで定義済のイベントをnameに登録することも可能(例:UIResponder.keyboardWillShowNotification)
nc.addObserver(self, selector: #selector(self.ncAction), name: UIResponder.keyboardWillShowNotification, object: nil)

// NotificationCenterに送信
// 上記で登録した「TestNotification」を発生させている
nc.post(name: Notification.Name(rawValue:"TestNotification"), object: nil)


// Notificationを受信した時に処理する関数
func ncAction(notification: Notification?){
    print("通知を受信しました!")
}

// NotificationCenterに登録した定義を解除
// iOS9.0 or macOS 10.11以降の場合は解除は不要のようです。
// 全て解除
nc.removeObserver(self)
// 個別に解除
nc.removeObserver(self, name: Notification.Name(rawValue:"TestNotification"), object: nil)
               
           

   
株式会社グロリア
石黒直樹
         
最後までお読みいただき、ありがとうございました!

以下も、ぜひご活用ください^^
情シスの定石
メルマガ
Site Access Log by HTTP Header
Site Access Log by HTTP Header
デジタル活用塾360

    >【発売中】情シスの定石(技術評論社)

    【発売中】情シスの定石(技術評論社)


    情報システム部門の担当者が「絶対に」押さえるべきノウハウを体系化!

    ・システムの企画から廃止まで、情シスが「何をすべきか」「どう動くべきか」がわかる
    ・失敗につながる「見えない要因」を明らかにし、成功に導くためのポイントを解説
    ・情報システム開発に携わるすべての人の必読書

    ■ こんな方にオススメ
    現役「情シス」/ 異動で「情シス」へ / 転職で「情シス」へ
    部下・新人育成にお悩みの方 / 業務部門の方
    経営者 / 開発ベンダ勤務の方 / 就活生

    CTR IMG