我目前对NSTimer多次使用postNotification,但是观察者只接收到一次。
在不添加多个观察者的情况下,如何多次接收相同的通知?
我的计时器是这样创建的:

timer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(update) , userInfo: nil, repeats: true)

更新方法的内部是:
let testNotification: NSNotification = NSNotification(name: "testNotification", object: self, userInfo: nil)
    NSNotificationCenter.defaultCenter().postNotification(testNotification)

这就是我如何在其中一个viewcontrollers中注册观察者的方法:
override func viewDidLoad() {
    super.viewDidLoad()
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(testNot), name: "testNotification", object: nil)
    updateView()
}

我像平常一样在viewcontroller中添加观察者。
我可以确认计时器是否工作,因为update()是按固定的间隔调用的,观察者确实是第一次收到通知,但它不会再次出现。
如果你想看更多的代码,请告诉我。

最佳答案

我不知道你的情况如何,但如果是一个屏幕,例如,这个屏幕被解除分配或关闭,并且你没有设置删除所有观察者,最像是为同一个名称生成多个观察者,看起来你收到了第一个,之后,另一个被分配,你没有收到,因为他们失去了参考。那应该会有帮助的

09-30 18:24