我一直关注this教程。我在编写App Controller类时遇到了概念上的麻烦,然后在Interface Builder中添加并连接。
添加AppController类 下一个任务是添加一个实例 Interface Builder的新类 记录并连接课程 网点。
创建一个实例 AppController类。在界面中 在Builder Library窗口中,单击Classes。 找到AppController类。拖动 这个类进入文档窗口 创建一个名为App的实例 控制器。连接应用程序 控制器的qcWindow出口到了 设计窗口。按住控件 键。在文档窗口中,拖动 应用程序控制器到窗口 宾语。选择qcWindow插座 从出现的列表中。连 App Controller的qcView插座 设计窗口中的QC视图。保持 按下Control键。从中拖出 App Controller到QC视图中 设计窗口。选择qcView 出现在列表中的出口。
具体来说,我不明白在运行时如何使用此App Controller。我所做的就是连接窗口并在IB中查看插座,它神奇地工作,好像它是在我的app委托的applicationDidFinishLaunching:aNotification
方法中初始化的。我的观点是,我没有在我的代码中的任何地方使用我的App Controller类,而我在IB中所做的一切都是它的出口,所以它是如何工作的?
答案 0 :(得分:2)
启动应用程序后,将创建NSApplication的共享实例,并且MainMenu.xib/nib is loaded及其内容(包括主菜单本身)将被连接。在此加载过程中,NSApp实例的委托指向您的“未冻结”(未归档)类,该类(以及其他可能的东西)可以回答NSApp委托问题,然后可以开始发送消息(并依赖于它用于App全行为定制)。
所有这一切的一个有用方面是,您可以通过[NSApp delegate]
从应用中的任意位置访问该代理,[[NSApplication sharedApplication] delegate]
是[[NSApp delegate] fooController]
的缩写。如果您将它们从应用程序委托中挂起并为它们提供访问程序(如{{1}}),这对于导航部分体系结构非常方便。