NSNotification发送多个对象?

use*_*143 -1 nsnotificationcenter ios

我正在学习如何使用NSNotificationCenter.我的理解是,对于每个通知,您可以发送单个对象.有没有办法发送包含多个对象的通知,还是我必须为每个对象发布新通知?

Sam*_*Sam 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];
Run Code Online (Sandbox Code Playgroud)

只是为了更详细地解释:要使用对象发布通知,您可以使用其中任何一个

-postNotificationName:object: 要么 -postNotificationName:object:userInfo:

在object参数中,您可能只提供单个对象.通常,object参数是notificationSender,即您将从self发布通知的任何地方传递.

如果您已使用注册通知-addObserver:selector:name:object:,并且您nilobject参数传递了任何值,那么您将仅接收通知,其中已发布的通知对象(object参数-postNotificationName:object:)与object参数匹配-addObserver:.

如果您通过nil-addObserver:随后object的价值-postNotification:为这个特殊的观察员被忽略.

哇,听起来很复杂.但它实际上非常简单.object如果用于,则参数必须匹配-addObserver:.

使用userInfo参数为通知观察者提供更多详细信息.