IPhone の現在の音量を取得するために NSNotification センターを使用しました。例 [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeChanged:)
name:MPMusicPlayerControllerVolumeDidChangeNotification
object:musicPlayer];
コードで post Post 通知を使用しませんでしたが、volumeChanged メソッドが呼び出されます。投稿通知の用途と使用方法は何ですか?
2 に答える
多くの通知は iOS によって自動的に生成され、ユーザーはそれらを監視し、それに応じて対応することができます。これは、音量変更通知をリッスンして行ったこととまったく同じです。
独自のメッセージを通知センターに自由に投稿することもでき、コードの他の部分がそれらに応答する場合があります。
メソッド内から、次のようなものを呼び出すことができます。
[[NSNotificationCenter defaultCenter] postNotificationName:@"com.ryan.cumley.updatedData" object:nil];
通知には任意の名前を付けることができますが、競合を避けるために com.xxx.xxx.whatever 表記を使用できます。
アプリに現在存在し、以前にこの通知名のオブザーバーとして自身を追加したオブジェクトは、このメッセージを受け取り、そのセレクターを起動します。
この設計パターンは、互いに明確な参照を一切維持することなく、離れたオブジェクト間でメッセージをやり取りする場合に特に役立ちます。さらに、多くの異なるオブジェクトが同時に観察できます。これは単なる 1 対 1 のメッセージではありません。
object:
その引数を使用して通知を渡すこともできます。
通知をサブスクライブしています (したがって、送信する必要はありません)。おそらくMPMusicPlayerController
、通知を送信しているクラス/インスタンスです。
通知のしくみについて詳しくは、こちらをご覧ください。