16

几年来,我一直只为 iOS 开发,并认为自己对 iOS 和 Objective C 相当胜任。我想进一步扩展我的技能并进入 OS X 桌面应用程序领域。

考虑到两个平台关于视图控制器和窗口控制器(仅举几例)的巨大不同范例,我正在努力寻找一个体面的起点来让我的脚湿透,因为我对 iOS SDK 的了解在阅读操作系统时会引起混乱X 文档。

对我来说,iOS 的主要类是UIViewController(以及它的变体UINavigationControllerUISplitViewController)和UIView. 掌握这些可以使学习它们的子类(例如UIButton, UITextField)更容易理解,同时还可以在屏幕上显示一些内容以提供可见的结果。

目前,据我了解,NSViewController不一定与UIViewController. 此外,考虑到 OS X 应用程序可以有多个窗口,UIWindowController这对我来说是完全陌生的,我不明白这将如何位于应用程序的层次结构中。

任何经验丰富的 OS X 退伍军人会好心地建议哪些课程是我阅读和玩耍的最有用的起点吗?在这一点上对我有帮助的是找到我应该集中精力在 SDK 的哪个区域来充分辨别 iOS 和 OS X 之间的差异。

编辑:

我不是要教程列表。我更希望有人解释多视图控制器层次结构 (iOS) 的范式与 OS X 的单个窗口设置之间的区别和/或建议最好研究哪些类作为在屏幕上显示某些内容的起点作为NSWindowNSWindowController

4

1 回答 1

9

OS X 与 iOS 非常相似,因为它也遵循 MVC 概念。然而,整个用户体验是不同的,因为 OS X 通常使用更大的显示器并使用鼠标和键盘进行输入,因此假设NSViewController和之间的 1:1 映射UIViewController是不可能的。通常情况下,你有一个窗口控制器,它有点像你期望你的视图控制器在 iOS 下的行为。但是,不是在视图控制器之间转换,而是使用例如。a UINavigationController,您可以将第二个窗口显示为模态表,或者将其作为面板或类似方式打开。

看看你的普通 Mac 应用程序,iOS 下的大多数东西都需要多个视图控制器和它们之间的转换,只需要一个包含所有内容的窗口即可。OS X 下的视图控制器不如 iOS 下有用,但是,它们可以很好地将不同的逻辑拆分到多个类中,或者当你想在一个窗口中显示不同的内容并在它们之间切换时(想想 Xcode,左边和右窗格始终相同,但中间的内容,文本编辑器,目标编辑器等发生了变化。那将是使用多个视图控制器的地方)。

我的建议是不要尝试 iOS'fy Mac 应用程序。虽然您可以保持底层逻辑相同,但由于 OS X 上的整个用户体验大不相同,因此您的应用程序的呈现方式应该有根本的不同。如果您不确定如何使用NSWindowController,NSDocument和所有内容,Apple 提供的文档和示例代码在大多数情况下都非常好(尽管有些示例较旧)

于 2013-09-02T08:40:20.717 回答