gpt4 book ai didi

ios - 有没有更好的方法从托管 View Controller 调用管理 View Controller 中的方法?

转载 作者:行者123 更新时间:2023-11-29 11:00:28 25 4
gpt4 key购买 nike

到目前为止,在我开发的应用程序中,我一直有一个 UIViewController 负责呈现其他 UIViewController 以在 UI 中显示转换。每当我有一个“托管” View Controller 调用“管理” View Controller 中的一个方法时,我必须确保我在托管 Controller 内部有一个对管理 Controller 的引用。

例如:如果我有一个名为 MainControllerUIViewController 负责管理应用程序 UI 中的其他 UIViewController,而 MainController 创建 2 个用于演示的 Controller 。分别调用了 SubController1SubController2。如果SubController1完成,MainController需要显示SubController2,我总是在里面设置一个MainController引用变量SubController1,以便它可以将更改传达给 MainController。这意味着每当 MainController 创建 SubController1 时,它必须将 SubController1MainController 引用变量设置为 self

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

最佳答案

在其他 View 中处理更改、操作或用户交互是 delegates 的基本用例.最佳做法是让主 Controller 成为第一个/第二个 View Controller 的委托(delegate),然后当子 Controller 中发生事件时,它们会调用其委托(delegate)的某些方法,然后委托(delegate)可以采取任何必要的操作。

按照您描述的方式传递引用不会对内存产生明显的影响,但是它确实将您的代码紧密地耦合到 MainController,应该避免这种情况。您应该努力灵活应对 future 的潜在变化。如果您过渡到通用应用程序并且 iPad 用户界面具有截然不同的结构会怎样?使用委托(delegate),您只需确保 Controller 之间的契约完好无损,但可以自由更改任何底层实现细节。

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

关于ios - 有没有更好的方法从托管 View Controller 调用管理 View Controller 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084173/

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