我创建了我的第一个复杂的OS X应用程序。在研究它时,我对如何使用实现NSApplicationDelegate
协议的类(Xcode默认为Cocoa应用程序创建的类,即MyApplicationAppDelegate.m/h
)有一些疑问。
在许多教程(和书籍)中,我看到人们创建了一个AppController
类来管理主要或通用应用程序任务。我更喜欢将我的通用任务直接添加到MyApplicationAppDelegate
中,并根据我需要管理的模块创建特定的控制器。
例如,我将MyApplicationAppDelegate
添加到用于打开其他窗口的每个IBAction
(即打开首选项面板),每个与特定模块/控制器没有严格关联的函数IBOutlet
1}} s用于主界面。在MyApplicationAppDelegate
中,我还添加了对应用程序中使用的控制器的每个引用。这基本上是关于它的。
我真的很困惑,因为我不确定是否或注意这是好设计。 MyApplicationAppDelegate
是否已设计用于其他目的?
我想要任何建议,如果可能的话,你可能会有任何关于Cocoa设计模式的文章。
答案 0 :(得分:1)
默认情况下,Xcode不会在Cocoa应用程序模板中创建应用程序委托类。
我相信Apple最近才引入了<AppName>_AppDelegate
类及其项目模板的自动创建,可能是3.2版左右。
这就是为什么许多旧书和教程都会创建一个AppController
类,因为旧项目模板没有为您创建一个。
您可以自由地使用<AppName>_AppDelegate
作为主控制器类,Apple将其添加到模板的原因是许多开发人员使用NSApplicationDelegate
对象作为其主应用程序控制器。
在Cocoa中了解有关设计模式的更多信息的绝佳资源是适当称为Cocoa Design Patterns的书。