Mit Swift 4 weist Apple über eine neue Compiler-Warnung darauf hin, dass wir die Verwendung #selector
in diesem Szenario vermeiden . Folgendes ist viel sicherer, um dies zu erreichen:
Erstellen Sie zunächst eine faule Variable, die von der Benachrichtigung verwendet werden kann:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Wenn Sie die tatsächliche Meldung enthalten erfordern werden, ersetzen Sie einfach die _
mit notification
.
Als Nächstes richten wir die Benachrichtigung ein, um zu beobachten, ob die App aktiv wird.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
Die große Änderung hier ist, dass #selector
wir anstelle von a jetzt die oben erstellte var aufrufen. Dies kann Situationen beseitigen, in denen ungültige Selektorabstürze auftreten.
Schließlich entfernen wir den Beobachter.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Danke dir!