将iOS(iPhone)应用程序移植到mac?

时间:2011-01-02 18:40:40

标签: iphone macos ios port

有没有一种首选方法可以解决这个问题?

有问题的应用程序不是太大。 。 。我在几个月的时间里写过的单人游戏。

编辑:我应该补充一点,我没有mac开发经验。 。 。除了成为iOS开发人员之外,还有其自然之处。

编辑:游戏中大量使用的类:NSObject,UIView和UIViewController的子类。我对NSView了解不多,但我很确定所有UIView的东西都能在那个类中运行。还有一些使用UITableViewController。我也有游戏中心,但我现在可以把它留下来。没有多点触控。

编辑:我的图形是QuartzCore和CoreGraphics框架中的所有内容。我的视图层次结构中等。

编辑:如果您正在使用此类端口,您可能也对memory management

的问题感兴趣

5 个答案:

答案 0 :(得分:25)

  1. 没有简单的方法。 就这么简单。令人沮丧的是,你只需要善于编程Mac。

  2. “我很确定所有UIView的东西都能在那个类中运行” - 不幸的是,没有。一切都是不同的,你必须努力工作。

  3. 这不是一个有趣的演出。确保你真的,真的认为它在经济上是值得的。

    除了其他任何内容之外,如果您在iOS应用中叠加了大量视图,请注意“兄弟视图对OSX无效”问题。从本质上讲,如果您依赖于手机上的嵌套层次结构视图,则必须更改为在Mac上使用图层(而不是简单的视图)!

    点击此链接:Is there a proper way to handle overlapping NSView siblings?了解该特定问题的详细信息!

答案 1 :(得分:14)

http://chameleonproject.org/ UIKit for Mac 来自Iconfactory值得一试。

“Chameleon正在进行中。该框架目前在九个月的工作后实现了大约60%的UIKit。”

https://github.com/BigZaphod/Chameleon

答案 2 :(得分:4)

你可能需要做很多工作。虽然纯粹的算法类将在没有任何变化的情况下移植,但任何触及UIKit的东西都可能需要重写或重新调整。 OSX上的UI类设计模式是视图之间的关系,您的代码负责管理控制器;而在iOS上,它是视图控制器之间的关系之一,其中隐含了视图管理。

当然,正如BoltClock所提到的,你有互动的问题。由于触摸不再有效,您可能需要首先处理您的交互模型,甚至在开始移植之前。

答案 3 :(得分:2)

有一个开源(BSD)UMEKit库可能有助于移植一些UI类,但你可能不得不重写相当数量的UI来更好地处理鼠标/键盘/多窗口/菜单GUI环境。基本的NSObjects,以及一些Open GL和Quartz图形渲染,只能进行轻微的修饰。

答案 4 :(得分:2)

正如其他人所说,移植可能是件苦差事。但是,一般技术起作用。您在Interface Builder中重新设计了界面(如果适用)并检查调用了哪些不同的控件(CocoaTouch只有一小部分典型的桌面控件)。 UI *通常变为NS *。 Tableview委托是类似的,所以它可能很容易。

我必须像往常一样推荐Aaron Hillegass的书。这是对Mac开发的一个很好的介绍,了解iOS开发为您提供了优势。

由于这是游戏,您可能需要考虑如何进行全屏模式。游戏不再占用整个屏幕,你不应该强迫它。现在需要一整套新的偏好。当然有一些“乐趣”现在涉及到使用Snow Leopard处理解决方案列表/更改的新方法(以前的方式为您提供弃用警告)。

接受在所有“点击”之前可能会有一个可能很长的过渡期:)