运行 每次打开应用程序时都编写代码 - 更好的方法?

Run Code Every Time App Opens - Better Way?

每次应用程序打开时,我都需要代码 运行,包括它是否只是暂停(用户点击主页按钮,然后返回到应用程序)。

我已经知道 viewDidLoad 只在初始 VC 加载时加载,所以这不能满足我的需要。而 viewWillAppear / viewDidAppear 也不这样做。这个 SO 线程有 an answer 但它是六年前的,我不喜欢这个答案。本质上,它说创建一个观察者。然而,这似乎是一种资源浪费,观察者创建了那些将内容保存在内存中的引用循环。

如果没有人给我更好的解决方案,我可能会在 AppDelegate 中尝试 "applicationDidBecomeActive",但我尽量不使用 ViewController 代码加载我的 appDelegate。

我的问题是,在回答此 SO 线程后的六年中,Swift/iOS10 现在是否允许更清洁的解决方案?

如果你不想使用 NSNotificationCenter 不如在 A​​ppDelegate[=10 中为你的 Viewcontroller 创建 全局对象 =]

然后将代码放入 applicationDidBecomeActive 和你的 viewController 对象

因为 applicationDidBecomeActive 每次启动应用程序和按下主页按钮时都会从后台调用,因此您无需在 viewWillAppear 中编写代码。

据我进一步研究后所知,自从六年前 post 以来就没有新方法了。但是,applicationDidBecomeActive 方法确实很有效:

func applicationDidBecomeActive(_ application: UIApplication) {
    guard let rvc = self.window?.rootViewController as? firstVCName else { return }
    rvc.nameOfMethodYouWantToCall()
}

以上获取对现有 VC 的引用(而不是创建一个全新的实例)。然后它调用该方法,而无需使用代码加载 appDelegate。非常简单高效。

我对此进行了测试,这正是我所需要的,每次打开应用程序时都会运行的代码。非常一致。