我在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");
}
}
我已经看到过使用userinfo这样做的建议,但我不太清楚如何;是在B / C类中实例化的计数器对象,并作为int或字典等传递
任何帮助非常感谢 感谢
答案 0 :(得分: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");
}
}
让我知道它是否适合你。
答案 1 :(得分:1)
有关如何传递userInfo字典,您可以访问How to pass userInfo in NSNotification?
你可以做的是,你可以在定义了check方法的类中有两个类级变量,然后根据你用userInfo字典中包含的通知对象发送的标识符,你可以增加countClassB和countClassC的值。 。
答案 2 :(得分:0)
您还可以分别在类b和c中实现增量方法。然后在你的测试方法中只调用increment方法,即[notification.object increment]。这样您就不必关心对象的实际类。要获得b或c的实际计数器,你可以使用属性(即在课程中你可以要求b.counter或c.counter)。