从iOS背景开发OS X.

时间:2013-09-02 08:19:05

标签: ios objective-c macos

我几年来一直在为iOS开发,并认为自己对iOS和Objective C非常称职。我想进一步扩展我的技能并进入OS X的桌面应用领域。< / p>

考虑到两个平台关于视图控制器和窗口控制器(仅举几例)的范例截然不同,我很难找到一个不错的起点让我的脚湿透了,因为我对iOS SDK的了解导致了阅读时的混乱通过OS X文档。

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

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

任何一位经验丰富的OS X老手都会非常友好地建议哪些课程对我来说是最有用的起点并且可以随时使用?在这一点上对我有帮助的是找到我应该集中精力于SDK的哪个领域,以充分辨别iOS和OS X之间的差异。

修改

我不是要求提供教程列表。我更倾向于某人解释多视图控制器层次结构(iOS)的范例与OS X的单个窗口设置之间的区别和/或建议最好调查哪些类作为在屏幕上获取某些内容的起点作为NSWindowNSWindowController

1 个答案:

答案 0 :(得分:9)

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

只要看看你的普通Mac应用程序,iOS下的大多数东西需要多个视图控制器和它们之间的过渡,只需要一个包含所有内容的窗口。 OS X下的视图控制器没有iOS那么有用,但是,它们可以很好地将不同的逻辑分成多个类,或者当你想在窗口中显示不同的内容并在它之间进行更改时(想想Xcode,左边)和右窗格总是相同,但中间,文本编辑器,目标编辑器等中的内容会发生变化。这将是一个使用多个视图控制器的地方。)

我的建议是不要尝试iOS'Fy Mac应用程序。虽然您可以保持底层逻辑相同,但是由于OS X上的整个用户体验差异很大,因此应用程序的表示应该根本不同。如果您不确定如何使用NSWindowControllerNSDocument等所有内容,那么Apple提供的文档和示例代码在大多数情况下都相当不错(但有些示例较旧)