2016-04-20 64 views
1

我目前使用NSTimer多次使用postNotification,但觀察者只接收一次。如何發佈多個NSNotification?

如何在不添加多個觀察者的情況下多次接收相同的通知?

我的定時器產生這樣的:

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() 
} 

我像往常一樣將觀察者添加到視圖控制器中。

我可以確認定時器的工作原理,因爲update()以常規間隔被調用,並且觀察者第一次接收到通知,但它不會重複發生。

如果您需要查看更多代碼,請讓我知道。

+1

您需要向我們展示創建計時器的代碼以及發佈通知的代碼。 –

+0

並註冊通知的代碼。 –

+0

你在哪裏放置方法來解除你的視圖控制器?也許在裏面viewDidDisappear或testNot – Andrea

回答

0

我不知道你的情況如何,但如果是一個屏幕例如,這個屏幕是釋放或解僱,你不設置刪除所有觀察員,最喜歡的是,正在爲相同的生成多個觀察員名字,看起來你收到第一個,之後,另一個分配,你沒有收到,因爲他們失去了參考。這應該有幫助

+0

我想收到多個通知,但我只添加觀察者一次。換句話說,我想在定時器上爲定期通知使用相同的通知集。 – Latcie

0

嘗試重新創建NSNotification的新對象。

0

因此,我的testNot()函數提供了一個模式視圖,並以某種方式禁止發佈進一步的通知。現在我必須弄清楚我如何呈現視圖並且仍然繼續接收通知。警報視圖仍然正常工作。它會在調試控制檯中引發一個錯誤,告誡視圖在接收到進一步的通知時仍然存在,但一旦警報視圖被解除,一切就會恢復正常。

相關問題