2011-02-09 54 views
0

我一直在關注this教程。我在編寫App Controller類時遇到了一些概念性問題,然後在Interface Builder中添加並連接了它。Interface Builder和Cocoa:在App Controller類後面接線

添加的AppController類 接下來的任務是將 新的類的實例添加到界面生成器 文件並連接類 網點。

創建一個 AppController類的實例。在界面 「構建器庫」窗口中,單擊「類」。 找到AppController類。將 這個類拖入到文檔窗口中,以 創建一個名爲App的實例控制器。將應用程序 控制器的qcWindow插座連接到 設計窗口。按住控制鍵 鍵。在文檔窗口中,從應用程序控制器的 拖動到窗口 對象。從出現的列表中選擇qcWindow插座 。在設計窗口中連接 應用程序控制器的QC視圖到 QC視圖。在控制鍵下按住 。從 應用程序控制器拖到 設計窗口中的QC視圖。從出現的列表中選擇qcView 插座。

具體來說,我不明白在運行時如何使用這個應用控制器。我所做的只是將窗口掛上並查看IB內的商店,它神奇地工作,就好像它正在我的應用代理的applicationDidFinishLaunching:aNotification方法中初始化。我的觀點是,我沒有在代碼中的任何地方使用我的App Controller類,並且我在IB中完成的所有工作都是連接其網點,所以它是如何工作的?

回答

2

當您的應用程序啓動時,會創建一個共享實例NSApplication,並且MainMenu.xib/nib is loaded及其內容(包括主菜單本身)都已連接。在此加載過程中,NSApp實例的委託指向您的「未凍結乾燥」(未存檔)類,該類可以回答NSApp委託問題,然後可以開始發送消息(並依賴於它的應用程序全範圍的行爲定製)。

所有這一切的一個有用的方面是,您可以通過[NSApp delegate](這是[[NSApplication sharedApplication] delegate]的簡稱)在應用程序的任何位置訪問代理。如果您將它們掛在應用程序代理上併爲它們提供訪問器(如[[NSApp delegate] fooController]),那麼這對於導航部分架構非常方便。