部队装载/卸载的一个图
-
22-07-2019 - |
题
我怎么可以设置一个图控制器刷新领域的看只是推导航控制和释放对象,当出现从导航控制器景。
我的目标是,对图控制器:
- 刷新显示,只有当它是推动在导航控制器堆
- 释放数据时,它是冒出来自导航控制器堆
- 重复使用的控制,尽可能(消除xib文件装载/卸载的开销)
是否有任何代表的方法 viewWillBePushed:
和 viewWillBePopped:
?
例
让我们说有三层意见:
Movies (MovieListController)
--> Movie Basic Info (MovieInfoController)
--> Movie Credits (MovieCreditsController)
假设我们有一个类 Movie
代表每一部电影。
在这里,我想到只有三个 UIViewController
s,一个实例中的每一个在运行的程序。所以我可以重复使用相同的 MovieInfoController
对于不同的电影和类似地 MovieCreditsController
.
然而,我也希望 MovieInfoController
只更新其视的领域(例如标题,释放日期等),只有当它被推堆。执行显示在 viewWillAppear
将迫使它更新的领域,甚至时 MovieCreditsController
是弹出。
还有,我想 MovieInfoController
释放其参考 Movie
, 当它出现,以及任何潜在的大型目标(例如盖图像)。执行这一逻辑 viewWillDisappear
会导致释放数据时,它是推动 MovieCreditsController
在堆。
是有合理的吗?我会对它的错误的方式?
解决方案
你是90%,有的因为你创造了一个电影的对象。MovieListController应该拥有一个单一的MovieInfoController.它应该叫 -setMovie:
之前将它推到导航控制器。呼叫 -setMovie:
应该是什么样的更新,您的领域。
同样,MovieInfoController应该拥有一个单一的MovieCreditsController,并且应该呼叫 -setMovie:
在它之前把它推到导航控制器。
在MovieListController和MovieInfoController,你可以打电话 [subController setMovie:nil]
在他们的 -viewDidAppear:
免费上的存储器。