我正在使用NSNotificationCenter來設置一個變量共享,當3個TableViewControllers(所有從同一類中分類)的通知進來時共享一個變量。NSNotificationCenter重新執行通知
所有作品,除了以下情形罰款:
用戶在主視圖(即實際處理/視圖響應通知)時,應用程序轉到後臺(例如,用戶按下Home鍵)。如果有通知進入,並且用戶從圖標或警報中啓動應用程序,則應用程序的行爲就好像它不僅需要處理最後一個通知,而且還需要處理所有通知。
例如:讓;我們假設應用程序已經處理了5個通知。該應用程序移動到背景,然後通知進來。用戶從圖標啓動應用程序移動到前臺的應用程序。該應用將觸發每個通知1個動作。
如果用戶在應用程序移至背景之前處於任何其他屏幕中,情況並非如此。但是,如果用戶移動到主視圖,通知已處理並且應用程序再次移至後臺,則在下一次通知時,應用程序將處理7個通知(我們的前5個+ +1個當前)。
雖然從概念上來說,好像我的應用程序正在產生n個觀察者,但我不清楚爲什麼。我在基類viewWillAppear
中設置了一個觀察者,並在viewWillDisappear
(也嘗試了一個deinit
塊 - 在行爲上沒有改變)中刪除。
任何想法爲什麼觀察者累積所有通知?這是觀察者的正常行爲嗎?如果是這樣,我該如何刪除「觀察和處理」的消息?
我的印象是,它會幫助很多,如果你也發佈一些代碼+日誌 –
嘗試兩件事:1.使用特定的removeObserver(作爲反對刪除所有)。 2.在addObserver之前調用removeObserver。 3.添加一個UIApplicationWillResignActiveNotification觀察者,允許我在應用移動到背景時刪除觀察者。 – goggelj
在您的應用程序的某個位置刪除通知觀察者。 – SahandTheGreat