是否正确,如果我在视图控制器上有2个通知,有2个观察者如此:
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotifications:) name:@"note1" object:nil];
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotifications:) name:@"note2" object:nil];
或者我只是通过将nil传递给名称然后检查handleNotification函数中发送的通知来确定运行了哪个通知:
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotifications:) name:nil object:nil];
感谢。
答案 0 :(得分:4)
实际上,如果您将nil
作为名称传递,您将收到所有通知,无论其名称是什么(不只是您想要的两个)。最好通过命名来分别订阅每一个。
摘自Apple文档:
如果您传递nil,通知中心不会使用通知的名称来决定是否将其传递给观察者。
(起初,这一点对我来说并不清楚,我误以为你不会收到任何通知)。
您可以为两者使用相同的回调/侦听器,并根据收到的通知决定做什么。
您可以在NSNotificationCenter
上创建一个类别来处理多个名称的注册,这些名称是为哪些类别制作的!