-1

NSNotificationCenter の使い方を学んでいます。私の理解では、通知ごとに 1 つのオブジェクトを送信できます。複数のオブジェクトで通知を送信する方法はありますか、またはオブジェクトごとに新しい通知を投稿する必要がありますか?

4

2 に答える 2

7

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:値を渡した場合、投稿された通知オブジェクト (の引数) が の引数と一致する通知のみを受け取ります。nilobjectobject-postNotificationName:object:object-addObserver:

を渡すnilと、この特定のオブザーバー-addObserver:object値は無視されます。-postNotification:

うわー、それは複雑に聞こえます。しかし、実際には非常に単純です。objectで使用する場合、引数は一致する必要があり-addObserver:ます。

引数を使用userInfoして、通知オブザーバーに詳細を提供します。

于 2013-08-22T21:55:27.053 に答える
1

通知には 1 つのみ含めることができますobject。複数のオブジェクトの場合、それらを送信する目的によって異なります。それぞれが個別に観察されている場合は、はい、複数の通知を送信する必要があります。コンテキスト情報を送信する必要があるだけの場合は、を使用する必要がありますuserInfo

于 2013-08-22T20:12:33.620 に答える