У меня есть класс, который обрабатывает уведомления.Я могу добавить наблюдателя в 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