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

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

我用过

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

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

他们在我的情况下工作。但我想了解这个论点的作用以及我应该传递什么。

4

3 回答 3

3

从文档中:

notificationSender 
The object posting the notification.

仅此而已,您可能需要它,也可能不需要。如果您在收到通知时没有使用它,那么它是否为零都没有关系。

检查文档:

NSNotificationCenter

于 2013-10-11T10:51:24.650 回答
1

NSNotification具有以下三个属性:

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

如果您不想将任何内容传递给接收者,请nil传递object.

于 2013-10-11T10:58:07.430 回答
0

案例:自我

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

你会得到如下的对象:

例子

[[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 时,这意味着通知将在没有对象的情况下触发,这意味着没有将对象作为通知的参数传递。

于 2013-10-11T11:01:46.890 回答