postnotificationname 多次调用的情况

[notificationCenter addObserver:self                       // 消息观察者:self
                           selector:@selector(payCancelCallBackGoOrderDetailShowAlert)      // 收到消息后的处理方法
                               name:@"payCancelCallBackGoOrderDetail" // 消息名
                             object:nil];

比如我这样,注册一个通知。但是payCancelCallBackGoOrderDetailShowAlert函数被执行了多次。从日志看只发送了一次。所以应该是多次重复注册导致的,但是确实没发现哪里有重复注册的情况。

所以为了解决这个办法,我只能执行函数的时候移除掉通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"payCancelCallBackGoOrderDetail" object:nil];

比如这样。这样就不会出现这个问题。但是这个是不是完美解决方案呢?如何解决这个问题呢?

阅读 7.6k
3 个回答

一般推荐在init里面addObserver,在dealloc里面removeObserver。

添加监听在willAppear里
清空在 willDisAppear里
就OK了

iOS有问必答社区为你回答
426981364(扣群)

如果VC是不会被销毁的,如首页,那么推荐在viewdidload中addObserver willDisapper中remove

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题