【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)

関連リンク

Qiita

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

記事情報や役立ち情報を発信します!
>− あなたと共に、未来を創る −

− あなたと共に、未来を創る −

この理念の元、あなたに寄り添い、あなた以上に未来を見据え、その未来に向けてトータルでサポートいたします。
その場限りではない、末永いお付き合いを望んでおります。

あなたの頭脳になりたい。全ては、明るい未来のために。

CTR IMG
Click to Hide Advanced Floating Content
Click to Hide Advanced Floating Content