NSNotificationCenter の使い方を学んでいます。私の理解では、通知ごとに 1 つのオブジェクトを送信できます。複数のオブジェクトで通知を送信する方法はありますか、またはオブジェクトごとに新しい通知を投稿する必要がありますか?
2 に答える
userInfo
の引数には好きな情報を渡すことができますpostNotification:object:userInfo:
。
たとえば、次のようにメソッドを呼び出すことができます。
NSDictionary *accountDetails = @{@"accountHolder":@"Mr John Smith",
@"accountNumber":@(01234567),
@"sortCode":@"01-98-34"};
[[NSNotificationCenter defaultCenter] postNotificationName:@"BankDidCreateNewAccount" object:self userInfo:accountDetails];
さらに詳しく説明すると、オブジェクトで通知を投稿するには、次のいずれかを使用します
-postNotificationName:object:
また-postNotificationName:object:userInfo:
object 引数では、1 つのオブジェクトのみを指定できます。通常、object
引数は です。つまり、通知を投稿する場所からnotificationSender
渡します。self
を使用して通知を登録し、引数以外の-addObserver:selector:name:object:
値を渡した場合、投稿された通知オブジェクト (の引数) が の引数と一致する通知のみを受け取ります。nil
object
object
-postNotificationName:object:
object
-addObserver:
を渡すnil
と、この特定のオブザーバー-addObserver:
のobject
値は無視されます。-postNotification:
うわー、それは複雑に聞こえます。しかし、実際には非常に単純です。object
で使用する場合、引数は一致する必要があり-addObserver:
ます。
引数を使用userInfo
して、通知オブザーバーに詳細を提供します。
通知には 1 つのみ含めることができますobject
。複数のオブジェクトの場合、それらを送信する目的によって異なります。それぞれが個別に観察されている場合は、はい、複数の通知を送信する必要があります。コンテキスト情報を送信する必要があるだけの場合は、を使用する必要がありますuserInfo
。