Con Swift 4, Apple informa a través de una nueva advertencia de compilación que evitamos el uso #selector
en este escenario. La siguiente es una forma mucho más segura de lograr esto:
Primero, cree una var perezosa que pueda usar la notificación:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Si necesita que se incluya la notificación real, simplemente reemplácela _
con notification
.
A continuación, configuramos la notificación para observar si la aplicación se activa.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
El gran cambio aquí es que en lugar de llamar a #selector
, ahora llamamos a la var creada anteriormente. Esto puede eliminar situaciones donde se producen bloqueos de selector no válidos.
Finalmente, eliminamos al observador.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. ¡Gracias!