0

IPhone の現在の音量を取得するために NSNotification センターを使用しました。例 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:MPMusicPlayerControllerVolumeDidChangeNotification object:musicPlayer]; コードで post Post 通知を使用しませんでしたが、volumeChanged メソッドが呼び出されます。投稿通知の用途と使用方法は何ですか?

4

2 に答える 2

1

多くの通知は iOS によって自動的に生成され、ユーザーはそれらを監視し、それに応じて対応することができます。これは、音量変更通知をリッスンして行ったこととまったく同じです。

独自のメッセージを通知センターに自由に投稿することもでき、コードの他の部分がそれらに応答する場合があります。

メソッド内から、次のようなものを呼び出すことができます。

    [[NSNotificationCenter defaultCenter] postNotificationName:@"com.ryan.cumley.updatedData" object:nil];

通知には任意の名前を付けることができますが、競合を避けるために com.xxx.xxx.whatever 表記を使用できます。

アプリに現在存在し、以前にこの通知名のオブザーバーとして自身を追加したオブジェクトは、このメッセージを受け取り、そのセレクターを起動します。

この設計パターンは、互いに明確な参照を一切維持することなく、離れたオブジェクト間でメッセージをやり取りする場合に特に役立ちます。さらに、多くの異なるオブジェクトが同時に観察できます。これは単なる 1 対 1 のメッセージではありません。

object:その引数を使用して通知を渡すこともできます。

于 2013-11-14T13:15:57.687 に答える
0

通知をサブスクライブしています (したがって、送信する必要はありません)。おそらくMPMusicPlayerController、通知を送信しているクラス/インスタンスです。

通知のしくみについて詳しくは、こちらをご覧ください。

于 2013-11-14T13:07:49.003 に答える