gpt4 book ai didi

iphone - 强制加载/卸载 View

转载 作者:行者123 更新时间:2023-12-03 16:45:05 25 4
gpt4 key购买 nike

如何设置 View Controller 来刷新 View 中的字段(仅将其推送到导航 Controller 上)并在从导航 Controller View 中弹出时释放对象。

我的目标是 View Controller :

  1. 仅在推送到导航 Controller 堆栈时刷新显示
  2. 从导航 Controller 堆栈中弹出数据时释放数据
  3. 尽可能地重用 Controller (以消除 xib 文件加载/卸载开销)

是否有 viewWillBePushed:viewWillBePopped: 的委托(delegate)方法?

示例

假设我有三层 View :

Movies (MovieListController)
--> Movie Basic Info (MovieInfoController)
--> Movie Credits (MovieCreditsController)

假设我们有一个类 Movie 来表示每部电影。

在这里,我只想拥有三个 UIViewController,在程序运行时每个都有一个实例。因此,我可以为不同的电影重用相同的 MovieInfoController 以及类似的 MovieCreditsController

但是,我还希望 MovieInfoController 仅在将其插入堆栈时才更新其 View 字段(例如标题、发布日期等)。即使在弹出 MovieCreditsController 时,在 viewWillAppear 中实现显示也会强制其更新字段。

此外,我希望 MovieInfoController 在弹出时释放对 Movie 的引用,以及任何潜在的大对象(例如封面图像)。在 viewWillDisappear 中实现此逻辑将导致它在将 MovieCreditsController 压入堆栈时释放数据。

有合理性吗?我的处理方式是否错误?

最佳答案

你已经成功了 90%,因为你创建了一个 Movie 对象。 MovieListController 应该拥有一个 MovieInfoController。它应该在将其推送到导航 Controller 之前调用 -setMovie:。对 -setMovie: 的调用应该更新您的字段。

类似地,MovieInfoController 应该拥有一个 MovieCreditsController,并且应该在将其推送到导航 Controller 之前调用 -setMovie:

在MovieListController和MovieInfoController中,您可以在其-viewDidAppear:中调用[subController setMovie:nil]来释放内存。

关于iphone - 强制加载/卸载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235624/

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