1

在我迄今为止开发的应用程序中,我一直UIViewController负责在 UI 中呈现其他UIViewControllers 以显示过渡。每当我有一个“托管”视图控制器调用“管理”视图控制器中的一个方法时,我必须确保我有一个对托管控制器内部的管理控制器的引用。

例如:如果我有一个负责管理我的应用程序 UI 中的其他 s的UIViewController调用,并创建 2 个控制器用于演示。分别称为和。如果完成并需要显示,我总是在其中设置一个引用变量,以便它可以将更改传达给. 这意味着无论何时创建它都必须将'引用变量设置为.MainControllerUIViewControllerMainControllerSubController1SubController2SubController1MainControllerSubController2MainControllerSubController1MainControllerMainControllerSubController1SubController1MainControllerself

我应该担心这种通信方法的内存使用情况吗?对这种行为使用通知会更好吗?我发现我现在使用的方法的主要好处是,如果需要,它可以非常容易地在视图控制器之间共享信息。任何想法都非常感谢。

4

1 回答 1

2

在其他视图中处理更改、操作或用户交互是委托的基本用例。最佳实践是让主控制器成为第一个/第二个视图控制器的委托,然后当子控制器中发生事件时,它们会调用其委托上的某些方法,然后可以采取任何必要的行动。

以您描述的方式传递引用不会对内存产生明显的影响,但是它确实将您的代码与 . 紧密耦合MainController,应该避免这种情况。您应该努力灵活地处理未来的潜在变化。如果您过渡到通用应用程序并且 iPad UI 具有截然不同的结构会发生什么?使用委托,您只需要确保控制器之间的合同完好无损,但可以自由更改任何底层实现细节。

保持视图之间的值/状态同步的其他选项是:

于 2013-04-18T13:46:09.813 回答