gpt4 book ai didi

iphone - 在重新启动时保留应用程序状态

转载 作者:行者123 更新时间:2023-12-03 18:52:12 24 4
gpt4 key购买 nike

我一直试图通过使用 [NSKeyedArchiver archiveRootObject:toFile:] 序列化我的主 UITabBarController 来保留 iPhone 应用程序的状态,但我遇到了困难。

首先,我遇到了 UIImage 的问题,因为它没有实现 NSCoding 协议(protocol),但我通过为 UIImage< 制作扩展类别来解决这个问题 存储和检索原始图像数据。

我现在遇到的问题是,当我从存档中恢复时,我的 View Controller 不存在。我的每个选项卡中都有 UINavigationControllers,当我恢复时,UINavigationItem 仍然存在(我可以使用“后退”按钮等来更改它们),但是 View Controller 就消失了。

我看到UINavigationControllerviewControllers属性被标记为(nonatomic,copy)。这是否意味着当您归档 UINavigationController 时,它不包含其 View Controller 堆栈?如果是这样,我该如何解决这个问题?我首先想到我会重写 UINavigationController 的 NSCoding 方法,但这会搞砸 NIB 文件的初始化。

我对保存应用程序状态遇到如此大的困难感到有点不安。我认为这是一个足够常见的用例,很容易实现。我在这里遗漏了什么吗?

最佳答案

@property 上的属性与归档行为几乎没有关系(它们仅描述 getter 和 setter 的工作方式)。

此外,仅仅因为 UI 类支持 NSCoding,并不意味着它可以用于重建状态。大多数时候,它们支持 NSCoding,以便可以使用 Interface Builder 从 NIB 文件构建和加载它们。如果您考虑一下无法在 Interface Builder 中设置的所有状态位,则 NSCoding 的类实现可能不支持任何数量的这些功能。

通常,人们不会使用 NSCoding 来存储应用程序状态,因为应用程序状态的具体构成是特定于您的应用程序的。

保存应用程序状态通常涉及自己存储允许您重新创建状态的值。即存储选定选项卡的索引或表示通过导航 Controller 走过的路径的一系列选定索引。

关于iphone - 在重新启动时保留应用程序状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/329511/

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