2016-08-08 31 views
1

Vielleicht bietet der Titel keine gute Beschreibung, also lesen Sie bitte Folgendes.Wie schwache Benachrichtigung zu melden

Ich habe eine Benachrichtigung, dass ein Ereignis hören gesetzt:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.checkIfNotificationsWereTurnedOnAfterAlertShowing), name: UIApplicationWillEnterForegroundNotification, object: UIApplication.sharedApplication()) 

Dann möchte ich Beobachter auf diese Meldung entfernen. Ich fand, dass ich so verwenden deinit benötigen:

deinit { 
    NSNotificationCenter.defaultCenter().removeObserver(UIApplicationWillEnterForegroundNotification) 
    print("deinit") 
} 

Aber das Problem ist, dass, wenn ich die View-Controller zu schließen, wird das Programm nie deinit Funktion ausführt. In diesem answer fand ich, dass es wegen starker Referenz sein könnte.

Ich habe viele Links überprüft, konnte jedoch nicht feststellen, wie eine schwache Referenz für eine Benachrichtigung deklariert werden kann. Also, wie kann ich eine schwache Benachrichtigung melden?

Hope meine Frage ist klar.

Wir freuen uns auf Ihre Hilfe.

+2

im Zusammenhang: http://StackOverflow.com/Questions/425354/what-type-of-Reference-does-nsnotificationcenter-keep-for-observers-Object – Wain

+0

Es ist schwache Referenz. Du musst etwas anderes dran haben. – Rob

+0

Siehe auch: http://stackoverflow.com/questions/26971415/deinit-never- called – Santosh

Antwort

1

Ich war nicht in der Lage, den Weg zu finden, um dies mit deinit zu behandeln, so entschied ich mich, Beobachter in viewWillDisappear zu entfernen, die gut für mich funktionierte. Vorgeschlagen von Rob Napier in den obigen Kommentar