Com o Swift 4, a Apple aconselha, por meio de um novo aviso do compilador, que evitamos o uso #selector
nesse cenário. A seguir, é uma maneira muito mais segura de fazer isso:
Primeiro, crie uma var lenta que possa ser usada pela notificação:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Se você precisar que a notificação real seja incluída, substitua _
por notification
.
Em seguida, configuramos a notificação para observar a ativação do aplicativo.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
A grande mudança aqui é que, em vez de chamar a #selector
, agora chamamos o var criado acima. Isso pode eliminar situações nas quais você obtém falhas inválidas no seletor.
Finalmente, removemos o observador.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Obrigado!