'对象'参数在`postNotificationName:object:`中做了什么?

时间:2013-10-11 10:49:19

标签: ios objective-c nsnotificationcenter

- (void)postNotificationName:(NSString *)notificationName 
                      object:(id)notificationSender

有人可以帮我理解上述方法中的object参数吗?

我用过

[[NSNotificationCenter defaultCenter] postNotificationName:@"Downloadfinished"
                                                    object:self]; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"Downloadfinished"
                                                    object:nil];

他们两个都在我的案例中工作。但我想了解论点的作用以及我应该传递的内容。

3 个答案:

答案 0 :(得分:2)

来自文档:

notificationSender 
The object posting the notification.

这就是全部,你可能需要它,或者你可能不需要它。如果您在收到通知时没有使用它,那么无论它是否为零都无关紧要。

查看文档:

NSNotificationCenter

答案 1 :(得分:1)

NSNotification具有以下三个属性:

  1. name - 通知的唯一标识符。
  2. object - 一个id参数,可以传递给接收方,并且可以在接收端用于任何目的,如果需要的话
  3. userInfo - NSDictionary对象:如果您想传递多个对象,请使用键/值对创建一个NSDictionary,然后传递它。
  4. 如果您不想向接收者传递任何内容,请将nil传递给object

答案 2 :(得分:0)

案例:自我

  

当您将对象写为Self或任何其他Object时,它意味着   通知将与对象一起触发将对象作为传递   通知的参数。

您将获得如下对象:

示例

[[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:self];

[[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(productsRequestCompleted:)
                                                     name:kProductsLoadedNotification
                                                   object:self];
- (void)productsRequestCompleted:(NSNotification *)notification
{
NSLog("%@",[notification object]); //You will get the Parameter
}

何时

案例:无

  

当你将对象写为nil时,它意味着   通知将在没有对象的情况下触发而不传递Object作为   通知的参数。