故事板 xcode 9.2 示例中需要恢复 id
Posted
技术标签:
【中文标题】故事板 xcode 9.2 示例中需要恢复 id【英文标题】:need of restoration id in storyboard xcode 9.2 example 【发布时间】:2018-04-23 07:37:44 【问题描述】:Storyboard xcode 9.2 示例中恢复 id 的需要是什么?我看到这个ios Storyboards: Restoration ID just like Storyboard ID? 但不明白。谁能帮我举个例子。
【问题讨论】:
恢复ID用于状态恢复见this What are the differences between Restoration ID and identifier to a UITableViewCell that set in storyboard的可能重复 但是如果可能的话你能有一些演示项目来理解。 阅读this和this 【参考方案1】:TL;DR
恢复标识符设置为UIViewController
(通常在故事板中),当您想在应用中保存和恢复它的状态时。没有恢复标识符的视图控制器将不会被考虑用于保存和恢复机制。
为什么需要应用状态恢复?
由于 iOS 设备的 RAM 容量有限,因此系统需要有效地管理有限的资源并在运行的应用程序之间共享。当您运行您的应用程序时,系统 (OS) 需要为其分配内存。如果内存够用就好了。如果内存不足,操作系统会确定哪个挂起的应用程序使用最多的内存,并根据操作系统为该应用程序确定的优先级,它将终止/终止并回收该内存并将其用于最高优先级的应用程序 (您刚刚打开的应用)。
状态恢复的工作原理
保存状态
如果您按下 Home 按钮并将您的应用置于暂停状态,那么您的应用也会发生上述过程。如果其他一些高优先级应用程序需要内存,如果您的应用程序消耗了大量资源,那么您的应用程序将被杀死。 这就是状态恢复发挥作用的地方。如果您启用状态恢复,每当您按下 Home 按钮时,该机制将存储分配了 RestorationId 的视图控制器,连同它的视图层次结构和必要的信息。您需要将应用的先前状态重新构建到磁盘。
恢复状态
假设您的应用程序被操作系统杀死,当您从主屏幕打开应用程序时,状态恢复机制将从磁盘中检索持久化的视图控制器及其视图层次结构并为您恢复它们(当然,您需要为重新创建应用程序的状态做出贡献),这样即使您的应用程序被系统残忍地杀死,用户体验也不会受到影响。
了解更多详细信息。按照这个 SO answer 和这个很棒的 tutorial 了解如何实现它。
【讨论】:
【参考方案2】:Restoration 标识符是一个字符串 id,您需要将其分配给您想要保留和恢复的任何视图控制器或视图。在状态保存期间,视图层次结构中具有恢复标识符的任何视图控制器或视图都将保存到磁盘。
Identity Inspector 中的 Storyboard Identity,用于从 Storyboard 中实例化对象。
创建对象和重新创建对象有两件事。当应用程序完全恢复时,恢复会保留您的视图或任何视图控制器,并且可以在您回来时恢复(重新创建)您的视图。
Storyboard ID 用于实例化视图控制器意味着创建对象。并用于识别情节提要上的对象。
【讨论】:
以上是关于故事板 xcode 9.2 示例中需要恢复 id的主要内容,如果未能解决你的问题,请参考以下文章