【问题标题】:port an iOS (iPhone) app to mac?将iOS(iPhone)应用程序移植到Mac?
【发布时间】:2011-01-02 18:40:40
【问题描述】:

有没有首选的方法来解决这个问题?

有问题的应用程序不是太大。 . .我花了几个月时间编写的单人游戏。

编辑:我应该补充一点,我没有 mac 开发经验。 . .除了成为 iOS 开发人员自然而然的事情之外。

编辑:游戏中大量使用的类:NSObject、UIView 和 UIViewController 的子类。我对 NSView 了解不多,但我很确定所有 UIView 的东西都可以在那个类中工作。还有一些 UITableViewController 的使用。我也有游戏中心,但我现在可以不考虑这部分。没有多点触控。

编辑:我的图形都是 QuartzCore 和 CoreGraphics 框架中的东西。我确实有一个适度的视图层次结构。

编辑:如果你正在做这样的移植,你可能也对memory management的问题感兴趣

【问题讨论】:

  • 您使用什么技术来编写游戏?你对 UIKit 类/对象的依赖程度如何?
  • 请记住,尽管有触控板,但触摸不再是主要的输入法。

标签: iphone macos ios port


【解决方案1】:
  1. 没有简单的方法。就是这么简单。令人沮丧的是,您只需要擅长对 Mac 进行编程即可。

  2. “我很确定 UIView 的所有内容都可以在该类中使用”——不幸的是,没有。一切都不一样,你必须努力工作。

这不是一场有趣的演出。确保你真的、真的认为这在经济上是值得的。

除此之外,如果您在 iOS 应用程序中堆叠大量视图,请注意“同级视图在 OSX 上不起作用”的问题。本质上,如果您在手机上依赖嵌套的视图层次结构,您将不得不在 Mac 上改为使用图层(而不是简单的视图)!

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

【讨论】:

  • 是的,我有时会忘记 UIKit 为您将 UIView 与 CALayers 如此干净地连接起来是多么美妙。在 OSX 上出现问题时将视图转换为图层并不好玩。
  • 什么是“兄弟视图不适用于 OSX 问题?”一点谷歌搜索对我没有帮助。
  • 好的,我猜你的意思是this question中提到的问题
【解决方案2】:

http://chameleonproject.org/ 适用于 Mac 的 UIKit Iconfactory 值得一试。

“Chameleon 是一项正在进行的工作。经过九个月的工作,该框架目前实现了大约 60% 的 UIKit。”

https://github.com/BigZaphod/Chameleon

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      有一个开源 (BSD) UMEKit 库可以帮助移植一些 UI 类,但您可能需要重写相当多的 UI 以更好地处理鼠标/键盘/多窗口/菜单图形用户界面环境。基本的 NSObject,以及一些 Open GL 和 Quartz 图形渲染,可能只需要稍作修改即可移植。

      【讨论】:

        【解决方案5】:

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

        我必须像往常一样推荐 Aaron Hillegass 的书。这是对 Mac 开发的一个很好的介绍,了解 iOS 开发会给你带来优势。

        既然是游戏,你可能需要考虑如何做全屏模式。游戏不一定要占据整个屏幕,你不应该强迫它。现在需要一套全新的偏好。现在当然有一些“乐趣”,因为有新的方法来处理与 Snow Leopard 一起列出/更改的解决方案(以前的方法会给你弃用警告)。

        请接受可能会有很长的过渡期,直到一切都“点击”:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-04
          • 2012-05-01
          • 2014-05-28
          • 2011-06-03
          • 1970-01-01
          相关资源
          最近更新 更多