【问题标题】:iOS: Memory management of UINavigationControllersiOS:UINavigationControllers 的内存管理
【发布时间】:2014-04-04 04:04:22
【问题描述】:

我在 StackOverflow 中看到过类似的问题,但我的问题完全不同。 我正在开发一个项目,用户必须在 UINavigationController 中浏览多个“堆叠”为系列的视图。

当用户在导航控制器中移动时,他必须在表单中填写数据并继续。用户也可以回来更改信息。 (当然,当他更改信息时,即将到来的表格中出现的问题可能会也可能不会改变)

现在的问题是,请回答,iOS 是将所有表单数据保留在内存中还是写入一些临时内存并取回? iOS 管理器如何在前一个视图的数据上显示数据?

谢谢你!

【问题讨论】:

    标签: ios7 uinavigationcontroller


    【解决方案1】:
    1. 当您将 ViewControllers 添加到 NavigationController 时,导航堆叠会被填满。

    2. UINavigationController 会将添加的视图控制器保留在内存中,直到视图控制器被删除。 (从导航控制器弹出)

    3. 因此,如果您要返回堆栈中间的视图控制器,则添加 lsat 的视图控制器有可能被删除,您将丢失数据。

    4. 处理此问题的最佳方法是持久化数据或创建模型对象并传递它。

    这适用于 iOs 6 / 7,如果您支持 iOS 5,则可以在收到“didReceiveMemoryWarning”时卸载视图,然后您将丢失数据。所以不要将数据存储在视图对象中使用模型或持久化它们

    【讨论】:

    • 是否可以更改 iOS 维护的堆栈顺序?
    • UINavigationController 将 viewControllers 保存在一个数组中。您可以通过 UINavigationController 中的“viewControllers”属性访问它。然后根据需要更改数组中元素的顺序并将其重新设置。类似的东西。 stackoverflow.com/questions/8627050/…
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多