【问题标题】:Developing for OS X coming from iOS background [closed]为来自 iOS 背景的 OS X 开发 [关闭]
【发布时间】:2013-09-02 08:19:05
【问题描述】:

我已经专门为 iOS 开发了几年,并且认为自己在 iOS 和 Objective C 方面相当胜任。我想进一步扩展我的技能并进入 OS X 桌面应用程序领域。

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

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

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

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

编辑:

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

【问题讨论】:

  • 我确实认为这是一个有趣的问题,并希望自己有一个很好的答案,但我也认为它相当广泛(因此很难给出明确的答案)和要求教程或其他此类资源的问题通常被认为是“离题”(对不起)
  • 我的问题不需要教程。谷歌搜索这些东西很容易。理想情况下,像@JustSid 的回答一样,朝着正确的方向推进以辨别iOS 和OS X 对应物之间的差异(例如NSViewControllerUIViewController)会更有帮助。

标签: ios objective-c macos


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回复。我不会尝试对应用程序进行 iOS 化。在我看来,iOS 应用程序完全由UIViewController 组成,而这并不是 OS X 应用程序的真正要求。根据您的回答,也许NSWindowNSWindowController 将是我首先要弄清楚的最重要的部分。
  • @CaptainRedmuff 是的,NSWindowController 有点像UIViewController 的对应物。就像你说的,在 iOS 下,一个应用程序通常包含在视图控制器中,而对于 OS X,它是一个或多个窗口控制器。
猜你喜欢
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 2015-03-18
  • 2011-05-12
  • 1970-01-01
相关资源
最近更新 更多