Iphone 强制加载/卸载视图

Iphone 强制加载/卸载视图,iphone,cocoa,cocoa-touch,uikit,uinavigationcontroller,Iphone,Cocoa,Cocoa Touch,Uikit,Uinavigationcontroller,如何设置视图控制器以刷新视图中的字段?仅当视图控制器从导航控制器视图中弹出时,它被推送到导航控制器上并释放对象 我的目标是,对于视图控制器: 仅在导航控制器堆栈上按下时刷新显示 从导航控制器堆栈弹出数据时释放数据 尽可能重用控制器(以消除xib文件加载/卸载开销) viewwillbepush:和viewWillBePopped:是否有任何委托方法 范例 假设我有三层视图: Movies (MovieListController) --> Movie Basic Info (Movi

如何设置视图控制器以刷新视图中的字段?仅当视图控制器从导航控制器视图中弹出时,它被推送到导航控制器上并释放对象

我的目标是,对于视图控制器:

  • 仅在导航控制器堆栈上按下时刷新显示
  • 从导航控制器堆栈弹出数据时释放数据
  • 尽可能重用控制器(以消除xib文件加载/卸载开销)
  • viewwillbepush:
    viewWillBePopped:
    是否有任何委托方法

    范例

    假设我有三层视图:

    Movies (MovieListController)
       --> Movie Basic Info (MovieInfoController)
            --> Movie Credits (MovieCreditsController)
    
    假设我们有一个类
    Movie
    来表示每一部电影

    这里,我只希望有三个
    UIViewController
    s,在程序运行时每个都有一个实例。因此,我可以对不同的电影重复使用相同的
    MovieInfoController
    ,同样的
    moviecreditcontroller

    但是,我还希望
    MovieInfoController
    仅在将其推到堆栈上时更新其视图字段(例如标题、发布日期等)。在
    视图中实现显示将出现
    将强制它更新字段,即使
    MovieCreditController
    被弹出

    此外,我希望
    MovieInfoController
    在弹出时释放对
    Movie
    的引用,以及任何可能较大的对象(例如封面图像)。在
    视图中执行此逻辑将消失
    将导致它在堆栈上按下
    MovieCreditController
    时释放数据


    这是否合理?我走错方向了吗?

    你90%的成功是因为你创建了一个电影对象。MovieListController应拥有一个MovieInfoController。在将其推到导航控制器上之前,它应该调用
    -setMovie:
    。对
    -setMovie:
    的调用应该是更新字段的内容

    类似地,MovieInfoController应该拥有一个MovieCreditController,在将其推到导航控制器上之前,应该在其上调用
    -setMovie:


    在MovieListController和MovieInfoController中,您可以在它们的
    -view中调用
    [setMovie:nil]
    ,以释放内存。

    这实际上就是我现在所做的,只是它调用
    drainFieldsInfo
    而不是
    setMovie:nil
    。我希望有更好的。谢谢你!