Класс Observer не получает уведомления - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть класс, который обрабатывает уведомления.Я могу добавить наблюдателя в NotificationCenter, но метод handles никогда не выполняется.Если я перенесу тот же метод в класс, который добавляет наблюдателя, он работает нормально.

Я попытался поместить его в класс, и он отлично работает, но не из другого объекта.Это на Swift 4.2.Я также распечатал всех наблюдателей через: print("Exp - NC - \(NotificationCenter.default.debugDescription)") и вижу, что наблюдатель был добавлен для имени .purchase.

// Работы

SomeClass.swift

// Works assuming notify handler is in this class
NotificationCenter.default.addObserver(self, selector: #selector(notify(_:)), name: .purchase, object: nil)

// Не работает

MyObserver.swift

import Foundation

@objc
public class MyObserver: NSObject {

    @objc
    public override init() {
        print("Observer here creating a new instance")
    }

    @objc public func onNotification(_ notification: Notification) {
        print("Observer 1 here notifying event")
    }
}

SomeClass.swift

let myObserver = MyObserver()  

NotificationCenter.default.addObserver(myObserver, selector: 
#selector(myObserver.onNotification(_:)), name: .purchase, object: 
nil)

Примечание: .purchase является расширением Notification.Name

Я ожидаю, что он также уведомит об этом через класс myObserver.Похоже, это работает только с self.Разница лишь в том, что наблюдатель - это пользовательский объект вместо self

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...