2011-08-31 40 views
4

我創建了我的第一個複雜的OS X應用程序。在處理它時,我對我如何使用實現NSApplicationDelegate協議的類(Xcode爲Cocoa應用程序默認創建的類,即MyApplicationAppDelegate.m/h)有所懷疑。NSApplicationDelegate類設計

在許多教程(和書籍)中,我看到人們創建AppController類來管理主要或通用應用程序任務。我更願意將我的通用任務直接添加到MyApplicationAppDelegate中,並根據我需要管理的模塊創建特定的控制器。

例如,我加入到每MyApplicationAppDelegateIBAction用於打開其它窗口(即打開偏好面板),每一個被不嚴格與特定的模塊/控制器和IBOutlet S爲主要接口連接功能。在MyApplicationAppDelegate中,我還添加了對我的應用程序中使用的控制器的每個引用。這基本上是關於它。

我真的很困惑,因爲我不確定是否注意到這是好的設計。有MyApplicationAppDelegate是否被設計用於其他目的?

我想任何建議,如果可能的話,你可能知道關於可可設計模式的任何文章。

回答

1

默認情況下,Xcode用於不在Cocoa Application模板中創建應用程序委託類。

我相信蘋果公司最近才推出了自己的項目模板<AppName>_AppDelegate,可能在3.2版本左右。

這就是爲什麼很多舊的書籍和教程都創建了AppController類,因爲舊的項目模板沒有爲您創建一個。

您可以自由使用<AppName>_AppDelegate作爲您的主控制器類,Apple將它添加到模板中的原因是許多開發人員使用NSApplicationDelegate對象作爲其主控制器。

瞭解更多關於Cocoa設計模式的優秀資源是適當地稱爲Cocoa Design Patterns的書。