如何停止NSNotification中的Observer调用两次?

阿扎尔

我有一个NSNotification被称为两次的观察者我不知道该怎么办。

我用谷歌搜索,但没有找到解决方案。

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

- (void)connectedToServer:(NSNotification*)notification {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"SendMessageToServer" object:message];
}
空栈

解决方案1:第一件事是检查通知本身是否发布了两次。

方案2:即使通知发布一次,该行动将被称为很多时候你已经添加了观察员通知(不论该通知相同与否)。例如,以下两行将两次self为同一notification(aSelector注册观察者(

[[NSNotificationCenter defaultCenter] addObserver:self selector:aSelector name:aName object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:aSelector name:aName object:nil];

您必须找到第二次添加观察者的位置,然后将其删除。还要确保添加观察者的代码不会被调用两次。

解决方案3:如果不确定是否已添加观察者,则只需执行以下操作。这将确保仅将观察者添加一次。

[[NSNotificationCenter defaultCenter] removeObserver:self name:aName object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:aSelector name:aName object:nil];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章