Message.mという名前の私のクラスの1つが、以下のようにオブジェクトsentObject
を使用して通知を投稿しています。
NSDictionary *sentObject = [NSDictionary dictionaryWithObjectsAndKeys:draftData.arr,@"data", nil];
//Post notification to inform a receiver to reload data
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadDuringSave" object:self userInfo:sentObject];
DraftData.mは、次のように通知をキャッチする受信者になります
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataReloaded:)
name:@"reloadDuringSave"
object:nil];
通知を投稿する場合、userInfo
はnil
にすることも、object
にすることもできます(この例のsentObject
のタイプとしてのNSDictionary
のように)。
object
メソッドのaddObserver
の他のパラメータは何ですか?それらはnil
以外のものである可能性がありますか?もしそうなら、何ですか?
" addObserver "へのその "object"パラメーターはオプションのフィルターです。通知の送信者に設定すると、その送信者のイベントのみが通知されます。 「nil」に設定すると、このタイプのすべての通知が届きます(誰が送信したかに関係なく)。
これを使用して、通知とともに任意のオブジェクトを渡すことができます。これで、通知の受信者はそのオブジェクトにアクセスできるようになります。たとえば、次のようにdataReloaded
を実装できます。
- (void)dataReloaded:(NSNotification *)notification {
NSLog(@"%@", notification.object); // this will log the object you passed in addObserver:selector:name:object:
}
通知とともにデータを渡したい場合に便利です。通知の受信者もそのデータを使用できます。
Appleのドキュメントに興味のある人のために。これはそれが言うことです:
notificationSender
オブザーバーが受信したい通知を持つオブジェクト。つまり、この送信者によって送信された通知のみがオブザーバーに配信されます。 nilを渡すと、通知センターは通知の送信者を使用して、通知をオブザーバーに配信するかどうかを決定しません。