Mac OS X上的Cocoa应用程序架构

时间:2009-09-03 02:34:56

标签: cocoa architecture interface-builder cocoa-bindings nsviewcontroller

经过长时间的iPhone工作后,我回到Mac上的Cocoa开发中。我之前在Mac上使用Cocoa的经历只是一些小巧的工具。我正在寻找一些严肃的东西。

查看像iPhoto(或Mail或Things或......)这样的现代Cocoa应用程序,许多应用程序使用基于单窗口,源列表的方法。我试图尽我所能地绕过那个,因为它似乎提供了一个很好的体验。但是,我有点麻烦。这是我认为应该如何看待,但我想知道其他人是如何做到的,以及最好的方式:

  • app的起点是一个AppDelegate对象,在启动后,从nib创建一个Window [Controller?],并设置其数据(来自CoreData)

  • WindowController加载一个基本上只有NSSplitView的窗口。

  • splitview的左侧有一个NSTableView或NSOutlineView,它被设置为具有SourceList样式。

  • 右侧有应用程序的主要内容,具体取决于所选表格视图的哪个项目。

我会假设某处(哪里?)有NSViewControllers管理将出现在右侧的每个不同视图(想想iPhoto如何拥有所有照片,事件,面孔,地方等等,我想他们都可以出现在不同的笔尖......这是正确的吗?)。

那些视图控制器可能绑定到左侧的源列表..这是如何工作的(源列表由NSViewControllers的NSArrayController支持?)。

无论如何,那些是我的想法,我是完全偏离基础还是......?我环顾网络,找到了这篇文章here,我看了一些Apple的源代码,但我似乎无法绕过它。欢迎任何指导。

2 个答案:

答案 0 :(得分:6)

将视图分解为单独的nib主要是好的,如果你要为其他人换掉一些视图,因为你可以懒得加载它们。是的,在现代应用程序中,您将使用NSViewController,或者来自KTUIKit的KTViewController(参见the posts she co-wrote about NSViewController

然而,不要只是碰到源列表的武器。单窗口界面可以很好地用于简单的应用程序,但是当你有很多事情发生时很快就会变得笨拙,因为通过将它们分成单独的窗口可以更好地服务它们; iTunes和Xcode都提供了很多这方面的例子(特别是后者,因为你可以在SWI和MWI之间切换)。

您需要考虑多窗口或单窗口界面是否会更适合您的应用。所有应用都没有一个答案;它完全取决于你的应用程序,你想要它做什么,以及你希望它看起来如何 - 你(以及你的团队的其他成员,如果你有的话)是唯一能够回答这个问题的人。您可能希望进行一些纸张原型设计,以便在每个方向上进行快速实验,这样您就可以至少保持两个UI相互虚假的例子。

答案 1 :(得分:4)

一种简单的方法来了解笔尖被分割的方式是进入iPhoto目录并开始打开笔尖

如果您想进一步了解课程结构,可以尝试使用F-Script浏览