主页按钮和ApplicationState。在重新启动应用程序时会调用哪种委托方法?

时间:2015-10-12 13:23:58

标签: ios swift swift2 nsnotificationcenter appdelegate

在我的if (!Process.GetProcessesByName("process_name").Length > 0) { // Is not running } 中,我实施了AppDelegate并设置了一个参数,该参数可以在整个应用中从applicationDidBecomeActive中选取。

在我希望在应用程序变为活动状态时调用的类中,我添加了一个观察者:

NSUserDefaults

然后我通过运行应用程序来测试代码,然后按下主页按钮,从其图标重新启动应用程序。令我惊讶的是,AppDelegate中的NSNotificationCenter.defaultCenter().addObserver(self, selector: "appplicationDidBecomeActive:", name: UIApplicationDidBecomeActiveNotification, object: nil) 未被调用,并且我的类中的相同方法也未被调用。

然后我测试了一段类似的代码,但使用applicationDidBecomeActive而不更改我班级中的观察者代码。

令我惊讶的是,这一切都奏效了。对于applicationWillEnterForeground和我的班级中的断点,我可以看到我的AppDelegate中的applicationWillEnterForeground被调用,我班上的观察者关联方法也被调用。

我不清楚为什么在重新启动应用程序时实际上没有调用委托方法AppDelegate为什么观察者如何知道应用程序变得活跃而没有代理方法知道它?

1 个答案:

答案 0 :(得分:1)

第一个想法是Apple dev post

同样this post(有点旧但仍然有用)

流程可以显示如下:

enter image description here