每次应用程序打开运行代码 - 更好的方式?

Dav*_*e G 0 lifecycle ios swift

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

我已经知道viewDidLoad只加载初始VC加载,因此不能满足我的需要.并且viewWillAppear/viewDidAppear也不这样做.这个SO线程有一个答案,但它来自六年前,我不喜欢这个答案.从本质上讲,它创造了一个观察者.然而,这似乎浪费了资源,观察者创建了那些将事物保存在内存中的引用循环.

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

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

小智 5

如果您不想使用NSNotificationCenter ,请在AppDelegate中创建Viewcontroller的全局对象

并使用viewController对象将代码放入applicationDidBecomeActive中

因为applicationDidBecomeActive在您启动应用程序时以及当您按下主页按钮并从后台调用时调用everyTime,因此您无需在viewWillAppear中编写代码.