Avec Swift 4, Apple conseille via un nouvel avertissement du compilateur que nous évitons d'utiliser #selector
dans ce scénario. Voici un moyen beaucoup plus sûr d'accomplir cela:
Tout d'abord, créez une var paresseuse qui peut être utilisée par la notification:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Si vous souhaitez que la notification réelle soit incluse, remplacez simplement le _
par notification
.
Ensuite, nous configurons la notification pour observer l'activation de l'application.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
Le grand changement ici est qu'au lieu d'appeler a #selector
, nous appelons maintenant le var créé ci-dessus. Cela peut éliminer les situations dans lesquelles vous obtenez des plantages de sélecteurs non valides.
Enfin, nous supprimons l'observateur.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Je vous remercie!