gpt4 book ai didi

objective-c - 管理 Controller 之间数据的最佳对象架构

转载 作者:行者123 更新时间:2023-12-03 16:32:38 24 4
gpt4 key购买 nike

我想开发一个应用程序,其中主窗口将有 NSTabView有几个NSTabViewItems ,并且在每个项目中都会有不同的 NSTableView .

您将如何组织类架构以便能够从每个选项卡 TableView Controller 访问其他选项卡 TableView Controller ?最好的方法是什么?

我读过很多关于 passing data between controllers using delegates 的内容等等,但我认为必须有另一种更清晰的方法来解决这个问题。

有下一个示例场景:

TabOneController.h

@interface TabOneController : NSControl {
NSMutableArray *listOne;
...
}

TabTwoController.h

@interface TabTwoController : NSControl {
NSMutableArray *listTwo;
...
}

这两个 Controller 实现 NSTableView使用其 NSMutableArray 的 dataSource 和委托(delegate)方法列出它。我想要一个适当的场景,其中两个 Controller 都可以相互访问(类方法、 View Controller 、管理所有 Controller 或任何适合这里的好主意的 Controller )。您认为最好的方法是什么?

提前致谢

最佳答案

如果您想在 Controller 之间共享数据,一个好的解决方案是将数据对象的相同实例传递给所有 Controller 。如果有更多数据要共享,或者数据附加了一些额外的功能,请将其包装在模型类中,并让 Controller 共享指向同一模型的指针。

如果你想让 Controller 互相调用,有很多种可能,不同的含义,没有明确的答案,一切都取决于情况。重要的问题是:为什么所有选项卡 Controller 都想要访问其他选项卡 Controller ?通常您应该保持 Controller 隔离。这称为松耦合,它非常有利于您的设计。

如果 Controller 需要相互调用,请尝试重新考虑设计。也许某些行为应该转入模型?例如,您可以将删除代码移动到模型中,而不是调用另一个 Controller 从列表中删除项目,其他感兴趣的 Controller 可以通过观察模型来了解模型的变化。

无论你做什么,just don’t use singletons :)我已经放了一些sample code on GitHub这展示了如何在不(错误)使用单例的情况下连接项目。

关于objective-c - 管理 Controller 之间数据的最佳对象架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574685/

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