gpt4 book ai didi

ios - MVC - View 可以保留对其 View Controller 的引用并处理数据吗?

转载 作者:行者123 更新时间:2023-11-28 18:38:24 28 4
gpt4 key购买 nike

使用 Cocoa-Touch,但这是一个普遍的问题。

View 可以保留对其 View Controller 的引用并处理数据吗?我最近遇到了一个在整个应用程序中执行此操作的代码库——例如,有一个 TableView Controller ,它的单元格对 View Controller 有一个弱引用(因此没有保留周期)。单元格通过

呈现新的 View Controller
[self.parentVC presentViewController.....];

并以类似的方式将其关闭。此外,他们还处理数据/网络操作的变化。

在我看到这个之前,我习惯于为每个单元格创建协议(protocol)并通过它们与父 View Controller 通信。使用直接引用 View Controller 的方法摆脱所有协议(protocol)。

对我来说,这似乎很糟糕,但不确定它是否普遍。

最佳答案

即将到来的答案是关于 Apple 处理 Model View Controller 的方式,这与其他 SDK(例如 Qt)完全不同。

这绝对是不好的做法。它可以归结为一个问题,如果您认为这是个好主意,那为什么 Apple 还没有在 UIView 类中添加该引用?/p>

如果你看看如何Apple uses the model view controller ,模型非常清晰:

enter image description here

View 与 Controller 通信以发出状态更改信号, Controller 在需要时更新模型并相应地更新 View 。您永远找不到 Apple 的文档或示例,其中您的 View 会更新堆栈 Controller 。

如果 UIView 子类开始持有对持有它的 Controller 的引用(即使它是一个弱引用),您正在移除 View 对其 Controller 的抽象(引用转到其他方式),因此强烈鼓励那些使用相同代码的人的不良做法。

这次什么会阻止另一个开发人员在 View 附加到的“模型”上添加引用?

现在我并不是说这会将您的代码变成意大利面条式代码(您仍然可以用它制作出像样的应用程序),我是说这真的(真的!)不好的做法。

希望这已经足够清楚了。

关于ios - MVC - View 可以保留对其 View Controller 的引用并处理数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15025147/

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