NSApplicationDelegate类设计

时间:2011-08-31 08:57:17

标签: cocoa

我创建了我的第一个复杂的OS X应用程序。在研究它时,我对如何使用实现NSApplicationDelegate协议的类(Xcode默认为Cocoa应用程序创建的类,即MyApplicationAppDelegate.m/h)有一些疑问。

在许多教程(和书籍)中,我看到人们创建了一个AppController类来管理主要或通用应用程序任务。我更喜欢将我的通用任务直接添加到MyApplicationAppDelegate中,并根据我需要管理的模块创建特定的控制器。

例如,我将MyApplicationAppDelegate添加到用于打开其他窗口的每个IBAction(即打开首选项面板),每个与特定模块/控制器没有严格关联的函数IBOutlet 1}} s用于主界面。在MyApplicationAppDelegate中,我还添加了对应用程序中使用的控制器的每个引用。这基本上是关于它的。

我真的很困惑,因为我不确定是否或注意这是好设计。 MyApplicationAppDelegate是否已设计用于其他目的?

我想要任何建议,如果可能的话,你可能会有任何关于Cocoa设计模式的文章。

1 个答案:

答案 0 :(得分:1)

默认情况下,Xcode不会在Cocoa应用程序模板中创建应用程序委托类。

我相信Apple最近才引入了<AppName>_AppDelegate类及其项目模板的自动创建,可能是3.2版左右。

这就是为什么许多旧书和教程都会创建一个AppController类,因为旧项目模板没有为您创建一个。

您可以自由地使用<AppName>_AppDelegate作为主控制器类,Apple将其添加到模板的原因是许多开发人员使用NSApplicationDelegate对象作为其主应用程序控制器。

在Cocoa中了解有关设计模式的更多信息的绝佳资源是适当称为Cocoa Design Patterns的书。