1

我在 A 类中有一个名为 Test 的 NSNotification 观察者。观察者调用一个方法,checker:

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

然后我在 B 类和 C 类中有两个帖子,都发给名为 Test 的观察者

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

我希望能够知道哪个帖子被发送给观察者并增加一个计数器以在 check 方法中可用,例如:

-(void)check {
    if ([classB count] <= [classC count]) {
        NSLog(@"boom");
    }
}

我已经看到使用用户信息的建议,但我不太确定如何;是在 B/C 类中实例化并作为 int 或字典等传递的计数器对象

非常感谢任何帮助谢谢

4

3 回答 3

2

好吧,您需要将计数器放在 A 类中。您可以在检查器中执行此操作:函数

- (void)checker:(NSNotification *)notification
{
    if ([notification.object isKindOfClass:[BClass class]]) {
        bCounter++;
    }
    else if ([notification.object isKindOfClass:[CClass class]]) {
        cCounter++;
    }

    if (bCounter < cCounter) {
        NSLog(@"boom");
    }
}

请让我知道这对你有没有用。

于 2011-08-02T17:37:29.720 回答
1

关于如何传递 userInfo 字典,你可以访问How to pass userInfo in NSNotification?

您可以做的是,您可以在定义检查方法的类中有两个类级变量,然后根据您发送的标识符以及包装在 userInfo 字典中的通知对象,您可以增加 countClassB 和 countClassC 的值。

于 2011-08-02T17:35:02.240 回答
0

您还可以分别在类 b 和 c 中实现增量方法。然后在您的测试方法中调用增量方法,即[notification.object increment]。这样您就不必关心对象的实际类。要获得 b 或 c 的实际计数器,您可以使用属性(即在 a 类中,您可以要求 b.counter 或 c.counter)。

于 2013-04-06T16:06:35.260 回答