我正在学习如何使用NSNotificationCenter。我的理解是,对于每个通知,您可以发送单个对象。有没有办法发送包含多个对象的通知,还是我必须为每个对象发布新通知?
答案 0 :(得分:7)
您可以在userInfo
的{{1}}参数中传递您喜欢的任何信息。
例如,您可以按如下方式调用该方法:
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:
在object参数中,您可能只提供单个对象。通常,-postNotificationName:object:userInfo:
参数为object
,即您可以从发布通知的任何位置传递notificationSender
。
如果您使用self
注册了通知,并且您为-addObserver:selector:name:object:
参数传递了除nil
之外的任何值,那么您将只收到已发布通知对象的通知({{ 1 {} object
中的参数与object
中的-postNotificationName:object:
参数匹配。
如果您在object
中传递-addObserver:
,则此特定观察者会忽略nil
-addObserver:
的值。
object
中使用-postNotification:
参数必须匹配。
使用object
参数向通知观察者提供更多详细信息。
答案 1 :(得分:1)
通知只能有一个object
。对于多个对象,它取决于您要为其发送的内容。如果分别观察每个,则是,您需要发送多个通知。如果您只需要发送上下文信息,那么您应该使用userInfo
。