从iOS跳到OSX

时间:2011-05-06 18:39:38

标签: iphone macos

我想开始学习为OSX编程,但只为iOS编程。

除了内存,处理能力等硬件相关问题之外,编程级别有哪些显着差异。

就实际的api和编程而言,就像鼠标和键盘而不是触摸屏使用的项目一样。

我希望有相关经验的人提供一些建议,可能还有很好的图书链接或教程链接。

由于

4 个答案:

答案 0 :(得分:22)

让我这样说吧:不要只是尝试将所有东西都移植到Mac而不考虑设计原则。许多开发人员都在寻求加入Mac开发人员的行列而不花时间进入他们的应用程序。简单地将应用程序从iOS移动到Mac并不会带来良好的界面。

面对现实,iOS专为触摸屏而设计,而Mac则不是。因此,简单地转移您的界面可能会有效,但它是错误并且被许多用户不满意。我要做的只是下载一些着名的Mac应用程序(演示工作正常),并研究界面与iOS相比如何布局。有类似的概念,但有更多的差异而不是相似之处。

最根本的区别是iPhone上的界面只能有一个窗口,而Mac可以有无限窗口(理论上)。将所有视图填充到一个窗口中只是不会在Mac上剪切它。用户已经开始期待多个窗口,老实说,这是一个更好的方法。

所以我的建议是从头开始学习Cocoa,然后考虑将应用程序转移到...... 而不是,只需移植它,而不是通过创建一个全新的界面。您的模型仍然可以使用,因为两个平台都使用Objective-C。

平台如此相似,但又如此不同。 :)

enter image description here

答案 1 :(得分:11)

在编写现代OS X应用程序时,您通常会使用Data Binding通过NSArrayController之类的通用控制器将您的模型连接到您的视图。

围绕Cocoa数据绑定对新手来说是一项具有挑战性的任务,起初非常令人沮丧,然后非常令人兴奋。如果您的主数据绑定可能从根本上改变您设计软件的方式。

问题在于,您的iOS应用程序都没有考虑到Data Binding的设计,这是您必须跨越的桥梁,以便成为一个快乐有效的OS X开发人员(同时学习各种各样的SDK差异)

答案 2 :(得分:9)

2年前我走了另一条道路,出乎意料地艰难地搬了过来。

OS X是一个更老的,并且是在Objective-C 2.0之前创建的,因此旧版AppKit / CoreFoundation类中没有很多属性。我的旧iOS代码大部分都是:

[[self navigationController] popViewControllerAnimated: YES];

用户界面:大部分的resoponder / view / control层次结构都是类似的,但现在称为NS(来自拉丁语,用于NextStep),而不是用户界面(用于小屏幕的拉丁语)。

控件:

略有不同,您将操作连接到控件,控件决定何时发送操作消息,即。如果滚动条设置为连续发送消息。这与UIkit的工作方式略有不同,您可以在其中连接到事件类型:值已更改,内部触摸等等。

您在OS X中获得了多个窗口,为您提供了新的机会和挑战。你不得不担心响应者层次结构

小东西总能让你,就像在UIBezierCurve中一样,这些方法的命名方式与NSBezierCurve,addLineToPoint:而不是lineToPoint:

的命名方式略有不同

注意你的编译器警告并获取一本新书,你会没事的。

答案 3 :(得分:8)

这两个平台多年来变得更加相似,许多OS X API被迁移到iOS。我认为主要的区别是UI部分。在OS X上,您使用AppKit来显示UI而不是UIKit。 (尽管您可以使用Interface Builder)。

有些API反过来了:CoreLocation曾经是一个仅限iOS的框架,现在可以在OS X上使用。

其他变化:

  • 事件模型不同(NSEvent vs UIEvent)。
  • Core OSI可用于OS OS X

根据您的经验水平,我将从Xcode中Apple提供的一些AppKit示例开始。 HTH