2

我需要我的 AppDelegate 能够获得指向我当前显示的视图控制器的指针(已经探索visibleViewController了导航视图,但更通用的版本会更好)并从我的对象实例中读取状态以用于applicationWillResignActive.

我在这方面的尝试让我初始化了新对象,而这些对象只是空的。我在运行时的任何时候都需要对象的状态。

我想我可以创建一个与我的对象平行的单例类,我可以从应用程序委托中调用它,但这看起来很笨重而且冗长。我还想过让视图控制器成为 AppDelegate 的委托,但这似乎更糟。

我知道我可能忽略了显而易见的事情,但我的搜索措辞肯定是错误的,因为我无法弄清楚。我搜索了 Stack Overflow 10 分钟,浏览了视图控制器和 appdelegate 文档。

如何在运行时从应用程序委托访问对象的属性值?

4

1 回答 1

2

具体取决于您的视图控制器所做的事情以及您希望您的应用程序在重新打开时如何恢复其状态,AppDelegate应该有最小的参与。

相反,您应该考虑让适当的视图控制器观察UIApplicationWillResignActiveNotification通知并各自执行自己的状态存储。当应用重新打开时,AppDelegate只恢复根视图控制器,根 VC 然后检查它是否需要恢复任何东西,并在一个链中直到所有数据都恢复。这使所有逻辑和数据存储保持模块化和隔离。

如果你真的:

在运行时的任何时候都需要对象的状态

然后你有一个不同的设计问题,你需要把事情分解。AppDelegate应该用于特定任务,它有一个角色可以发挥,但这个applicationWillResignActive角色不应该是管理需要完成的 100% 的工作。

于 2013-05-14T07:37:07.823 回答