gpt4 book ai didi

ios - UIViewController 状态恢复 - 弱关系

转载 作者:可可西里 更新时间:2023-11-01 03:33:04 29 4
gpt4 key购买 nike

Apple 在 iOS 6 中向 UIViewController 和相关类添加了状态恢复。这允许应用程序在终止时保存状态并在用户恢复应用程序时恢复它。

一切似乎都运行良好,但我遇到了一个不符合模式的奇怪场景。

假设我们有两个 View Controller ,ViewControllerOneViewControllerTwo,它们都存储一些成功恢复的任意状态。现在让我们假设 ViewControllerOne 有一个 delegate 属性,而 ViewControllerTwo 就是那个委托(delegate)(这是模态视图 Controller 的常见模式)。谁负责修复这种关系?它应该如何存储/恢复?

在我的特定情况下,不涉及 Storyboard,恢复通过 restorationClass 属性在代码中发生。我的第一直觉是在 restorationClass 中创建 View Controller 时尝试恢复关系,但是由于 restorationClass 不知道其他现有 Controller ,因此无法完全恢复这种关系。

或者,如果是声明 delegate 属性的 View Controller 应该恢复关系,那么它现在如何处理在其他类中恢复的 Controller 实例?

简而言之,这似乎是一个记录不完整的场景,我希望有人能对此有所启发。

最佳答案

我想说的是,任务落在委托(delegate) View Controller 上,将其自身设置为这样,就像您在推送另一个 View Controller 之前所做的那样。

关于如何实现这一点,您有多种选择。

您可以将对 View Controller 的弱引用存储在全局可访问的位置(例如,应用委托(delegate)),并在 application:didDecodeRestorableStateWithCoder: 中使用这些值来设置委托(delegate) - 这是此方法在 API 中的用途。

或者,您可以从顶层 View Controller 发布一个“hereIAmThisIsMe”通知(带有用户信息的 self 部分),代理监听并将自己设置为代理。

关于ios - UIViewController 状态恢复 - 弱关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665460/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com