629 Stimmen

Senden und Empfangen von Nachrichten über NSNotificationCenter in Objective-C?

Ich versuche, Nachrichten zu senden und zu empfangen über NSNotificationCenter in Objective-C. Ich habe jedoch keine Beispiele dafür gefunden, wie man das macht. Wie senden und empfangen Sie Nachrichten über NSNotificationCenter ?

0 Stimmen

Wirklich sehr nützlich, danke. Eine Sache, die addObserver-Methode sollte nicht den abschließenden Doppelpunkt nach dem angegebenen Selektor haben (zumindest verursachte es eine Ausnahme in meiner Version von diesem). Ich habe versucht, den Code oben zu bearbeiten, aber die Änderung wurde aufgrund von Formatierungsproblemen im ursprünglichen Code nicht akzeptiert.

3 Stimmen

Das war großartig: cocoawithlove.com/2008/06/

2 Stimmen

Diese Frage ist viel zu einfach und breit gefächert, ein bisschen googeln wäre gut gewesen

8voto

Maneesh M Punkte 163

SWIFT 5.1 der ausgewählten Antwort für Neulinge

class TestClass {
    deinit {
        // If you don't remove yourself as an observer, the Notification Center
        // will continue to try and send notification objects to the deallocated
        // object.
        NotificationCenter.default.removeObserver(self)
    }

    init() {
        super.init()

        // Add this instance of TestClass as an observer of the TestNotification.
        // We tell the notification center to inform us of "TestNotification"
        // notifications using the receiveTestNotification: selector. By
        // specifying object:nil, we tell the notification center that we are not
        // interested in who posted the notification. If you provided an actual
        // object rather than nil, the notification center will only notify you
        // when the notification was posted by that particular object.

        NotificationCenter.default.addObserver(self, selector: #selector(receiveTest(_:)), name: NSNotification.Name("TestNotification"), object: nil)
    }

    @objc func receiveTest(_ notification: Notification?) {
        // [notification name] should always be @"TestNotification"
        // unless you use this method for observation of other notifications
        // as well.

        if notification?.name.isEqual(toString: "TestNotification") != nil {
            print("Successfully received the test notification!")
        }
    }
}

... irgendwo anders in einer anderen Klasse ...

 func someMethod(){
        // All instances of TestClass will be notified
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "TestNotification"), object: self)
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X