Где не так
Ваш код правильно объявил любую переменную с типом класса.
Однако существует большая ошибка при создании экземпляра UIApplication.didEnterBackgroundNotification
, который имеет тип class
и имеет подклассы NSNotification.Name
, который является struct
.
Когда вы обращаетесь к переменной check
, вы не можете установить ее, потому что ее неизменяемая структура означает, что вы не можете изменить ее (присвоить ей значение).Итак, наблюдатель свойства didSet
не собирается звонить, следовательно, печать также не собирается звонить.Это ошибка.
Решение:
Мы можем использовать NotificationCenter
для наблюдения за переходами переднего плана на задний план и наоборот для приложения iOS
.
Из Apple Doc.s
Объекты регистрируются в центре уведомлений для получения уведомлений (объекты NSNotification) с использованием addObserver (_: селектор: имя: объект :) или addObserver (forName: объект: очередь: используя методы :).Когда объект добавляет себя в качестве наблюдателя, он указывает, какие уведомления он должен получать.Поэтому объект может вызывать этот метод несколько раз, чтобы зарегистрировать себя в качестве наблюдателя для нескольких различных уведомлений.
Каждое работающее приложение имеет центр уведомлений по умолчанию, и вы можете создавать новые центры уведомлений для организации связи в определенных контекстах..
Попробуйте это
Для переднего плана
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterForeground), name: UIApplication.didBecomeActiveNotification, object: nil)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
NotificationCenter.default.removeObserver(self, name: UIApplication.didBecomeActiveNotification, object: nil)
}
@objc private func applicationDidEnterForeground() {
//Do your stuff here
}
Для фона
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
NotificationCenter.default.removeObserver(self, name: UIApplication.didEnterBackgroundNotification, object: nil)
}
@objc private func applicationDidEnterBackground() {
//Do your stuff here
}
Для получения дополнительной информации, пожалуйста, посетите
https://developer.apple.com/documentation/foundation/notificationcenter