Con Swift 4, Apple avvisa tramite un nuovo avviso del compilatore che ne evitiamo l'utilizzo #selector
in questo scenario. Di seguito è riportato un modo molto più sicuro per ottenere questo risultato:
Innanzitutto, crea un var pigro che può essere utilizzato dalla notifica:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Se desideri includere la notifica effettiva, sostituisci semplicemente _
con notification
.
Successivamente, impostiamo la notifica per osservare che l'app diventa attiva.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
Il grande cambiamento qui è che invece di chiamare a #selector
, ora chiamiamo il var creato sopra. Ciò può eliminare situazioni in cui si verificano arresti anomali del selettore non validi.
Infine, rimuoviamo l'osservatore.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Grazie!