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

    メルマガ 登録フォーム

    最後までお読みいただき、まことにありがとうございます。

    Gloria, Limitedでは、「ITお役立ち情報」をお伝えするメルマガ『Professional's eye』を発行しております。

    • こんなセキュリティを気にすべきと分かり、助かった!
    • こんな便利なものがあることを知った!
    • クライアント様との会話が盛り上がった!

    など、大変好評をいただいております。

    無料でご購読できますので、ぜひご登録ください。

    お名前(ハンドルネーム可)*
    メールアドレス*
    個人情報の取扱いについて* Privacy Policy

    ご入力頂いたメールアドレス宛に、広告を含むご案内のメールをお送りする場合があります。
    また、ご入力いただいた個人情報は「Privacy Policy」の記載に基づいて適切に管理します。

    バックナンバーを見る

    関連リンク

    Qiita

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