W Swift 4 Apple informuje za pośrednictwem nowego kompilatora ostrzeżenie, że unikamy korzystania z #selector
tego w tym scenariuszu. Następujący sposób jest o wiele bezpieczniejszy.
Najpierw utwórz leniwy war, którego można użyć w powiadomieniu:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Jeśli wymagają rzeczywistej powiadomienie być włączone, po prostu wymienić _
się notification
.
Następnie skonfigurujemy powiadomienie, aby obserwować, czy aplikacja stanie się aktywna.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
Duża zmiana polega na tym, że zamiast wywoływać a #selector
, nazywamy teraz var utworzony powyżej. Może to wyeliminować sytuacje, w których występują nieprawidłowe awarie selektora.
Wreszcie usuwamy obserwatora.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Dziękuję Ci!