2016-04-20 4 views
1

В настоящее время я использую postNotification несколько раз с NSTimer, но наблюдатель получает его только один раз.Как опубликовать несколько 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() 
} 

Я добавляю наблюдателей в viewcontroller, как обычно.

Я могу подтвердить, что таймер работает, потому что update() вызывается на регулярном интервале, и наблюдатель действительно получает уведомление в первый раз, но он не повторяется.

Пожалуйста, дайте мне знать, если вам нужно больше узнать о коде.

+1

Вам необходимо показать нам код, который создает таймер и код, который отправляет уведомление. –

+0

И код, который регистрируется для уведомления. –

+0

Где вы поместили метод, чтобы отключить ваш контроллер? Может быть, внутри viewDidDisappear или testNot – Andrea

ответ

0

Я не знаю, как ваша ситуация, но если это экран, например, и этот экран освобожден или уволен, и вы не установите для удаления всех наблюдателей, скорее всего, это создание нескольких наблюдателей для одного и того же имя, выглядит, что вы получаете первый, после того, как другой выделен, и вы не получаете, потому что потеряли ссылку. Это должно помочь

+0

Я хочу получать несколько уведомлений, но я только добавляю наблюдателя один раз. Другими словами, я хочу использовать тот же набор уведомлений на таймере для повторяющихся уведомлений. – Latcie

0

Попробуйте воссоздать новый объект NSNotification.

0

Итак, моя функция testNot() представила модальный вид и что-то отключила дальнейшие уведомления от публикации. Теперь я должен выяснить, как я могу представить представление и продолжать получать уведомления. Представления оповещений все еще работают правильно. Он выдает ошибку в консоли отладки о представлении предупреждения, все еще присутствующем при получении дальнейших уведомлений, но как только предупреждение открывается, все возвращается к нормальному состоянию.

Смежные вопросы