ios - 我要疯了吗? UIApplicationWillEnterForegroundNotification 不适用于模拟器或设备

标签 ios xcode swift

这是一个很简单的问题。在我的 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/

相关文章:

ios - 在 xcode/swift 3 中点击一个 View 到 'select' 它

ios - 将 NSDates 天设置为相同的值

ios - 如何在 Xcode 6 调试器中访问隐藏/缩写的堆栈帧(堆栈跟踪缩写 slider 去了哪里?)

iphone - NSURLConnection使应用程序崩溃,但仅在打开和关闭电子邮件应用程序之后

ios - 嵌套的推送动画会导致损坏的导航栏多次警告

ios - 你能扩展一个继承自另一个协议(protocol)的协议(protocol)吗?

ios - 应用程序因无法识别的选择器发送到实例而崩溃 - 可能是骗局

ios - 吊销分发证书后无法访问钥匙串(keychain)

ios - 在 iOS 中创建 VCard 时未获取联系人图像和注释

swift - 如何计算显示的 Sprite 数量?