わかりましたので、それはかなり壊滅的です。
イベントの登録/登録解除に注意する必要があるため、メモリ リークが発生する可能性があります。
すべてを機能させるには、登録ステータスが何であるかを知るフラグを設定する必要があります: バックグラウンドイベントに署名したかどうか。View Controllerがユーザーに表示されたとき(ユーザーが別のユーザーから来た場合)、またはユーザーがホーム画面からView Controllerに来た場合は、イベントに登録する必要があることに注意してください。
ビューコントローラーを別のコントローラーに任せる場合も、登録を解除する必要があります。
要するに:
スウィフト 4:
private var registeredToBackgroundEvents = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
registerToBackFromBackground()
}
/// register to back from backround event
private func registerToBackFromBackground() {
if(!registeredToBackgroundEvents) {
NotificationCenter.default.addObserver(self,
selector: #selector(viewDidBecomeActive),
name: UIApplication.didBecomeActiveNotification, object: nil)
registeredToBackgroundEvents = true
}
}
/// unregister from back from backround event
private func unregisterFromBackFromBackground() {
if(registeredToBackgroundEvents) {
NotificationCenter.default.removeObserver(self,
name: UIApplication.didBecomeActiveNotification, object: nil)
registeredToBackgroundEvents = false
}
}
@objc func viewDidBecomeActive(){
logicManager.onBackFromStandby()
}
override func viewWillDisappear(_ animated: Bool) {
unregisterFromBackFromBackground()
}