Завдяки Swift 4, Apple радить через нове попередження компілятора, щоб ми уникали використання #selector
цього сценарію. Нижче подано набагато безпечніший спосіб досягти цього:
Спочатку створіть лінивий var, який може бути використаний сповіщенням:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Якщо вам потрібно фактичне повідомлення буде включено, просто замінити _
з notification
.
Далі ми налаштовуємо сповіщення, щоб спостерігати за тим, як додаток стає активним.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
Велика зміна тут полягає в тому, що замість виклику a #selector
ми тепер називаємо var, створений вище. Це може усунути ситуації, коли ви отримуєте недійсні збої селектора.
Нарешті, ми видаляємо спостерігача.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Дякую!