什么是"对象"在objective-c中添加观察者时的参数?

时间:2018-02-14 06:48:52

标签: ios objective-c nsnotificationcenter observers

通常情况下,我在对象参数中使用nil,而在任何类中添加观察者。现在,我的问题是在添加观察者时使用object参数的内容,对于发布,我可以理解,它对于将任何对象作为通知对象传递非常有用。

[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(testMethod:) name:@"userDetailUpdatedNotification" object: nil];

是的,这是一个有点愚蠢的问题,但如果您对此有所了解,请解释我。所以,在添加观察者时,我不能错过传递对象的任何优势。

根据question's answer,我仍然感到困惑。如果只是为了过滤它为什么不是布尔类型以及它需要哪种对象。如果可能的话请用一些例子解释我。

此致

1 个答案:

答案 0 :(得分:0)

object参数是一个过滤器:观察者方法仅在通知的发件人是给定对象时才接收通知。您可能有多个发件人用于通知类型。 object参数标识发件人。将对象设置为desiredSender类似于

- (void)testmethod:(NSNotification *)notification {
    if(notification.object == desiredSender) {
        ...
    }
}

如果您传递nil而不是对象,则会收到所有发件人的通知。