我对cocoa框架存在架构问题。
所以问题是我的应用程序中有一个包含2个子视图的 MasterView :
两个视图都会调用end方法:openFileWithUrl(url:NSURL)
所以问题是:将这个存档的最佳(最多苹果)方式是什么?
我将方法 openFileWithUrl(url:NSURL)放在 MasterViewConroller
中我的 RecentFilesTableDelegate 会引用 MasterViewConroller 并调用该方法。
我将 OtherFileView 的控制器放在 MasterViewConroller 中。
缺点:引用地狱(这个类引用它,引用它等等......)。
我将使用 MasterViewConroller 作为一个真正的主控制器,它会在“最近的表”中双击并点击“打开另一个文件”按钮。
我必须以某种方式从 RecentFilesTableView 中获取所选文件。我没有看到这样做的方法(ofc。我可以将tableView.dataSource()转换为我的类。但我相信干净的设计不涉及这样的转换。)
缺点:一个人来统治他们。
由于我无法为RecentTableDelegate和MasterViewController创建超类,我可以使用Swift扩展为它们添加一个开放方法。但那不是很OOP。
那么Apple世界做这类事情的模式是什么?
答案 0 :(得分:0)
由于您希望避免重复执行openFileWithUrl(url: NSURL)
,因此可以为NetworkManager
这些类型的操作创建单独的类。这个解决方案与Apple的NSFileManager
一致。当您需要执行该操作时,请创建该类的实例并调用该函数。