这是一个很简单的问题。在我的 View Controller 中,我正在注册“前台”通知:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyViewController.applicationDidEnterForeground(_:)),
name: UIApplicationWillEnterForegroundNotification, object: nil)
}
func applicationDidEnterForeground(notification: NSNotification) {
print("I'm not going crazy")
}
我的期望
将应用程序置于前台后,应执行打印语句并将其打印到控制台。
但是...
这永远不会发生。我是一名经验丰富的 iOS 开发人员,我已经尝试了一个小时左右。
我到底错过了什么?这对其他人有用吗?尝试过:
- 对象的不同值,(self、nil、
UIApplication.sharedApplication()
) - 注册
UIApplicationDidEnterBackgroundNotification
- 工作正常 - 重新启动 Xcode、模拟器
- 在设备和模拟器上运行
- 清理构建文件夹
最佳答案
看起来 UIViewController 上的扩展正在调用
NSNotificationCenter.defaultCenter().removeObserver(self)
随意,不考虑任何子类。不是很有帮助,而且很难找到,因为扩展可能位于与您正在处理的任何内容完全无关的地方,甚至不一定是 View Controller 类层次结构的一部分。
如果您正在编写扩展...请记住这一点!!!
关于ios - 我要疯了吗? UIApplicationWillEnterForegroundNotification 不适用于模拟器或设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739827/