1

我正在构建一个应用程序,我想在 iOS 和 OSX 中重用 99% 的代码。只是要求进行健全性检查。

(编辑)关于我的项目的更多信息可能会影响一些响应:我的应用程序涉及一个可定制的演示文稿,主要用于 iOS 设备。OSX 组件实际上是可定制呈现的设计器 - 一种指定要在选定的 iOS 设备上呈现的内容的方法。也就是说,OSX 应用程序将是一个完全正常的 OSX 应用程序,它允许用户为 iOS 设备选择、配置和定位一些元素 - 并显示该演示文稿的预览。当然,我希望预览尽可能类似于 iOS 渲染(而不实际调用 iOS 模拟器,我不希望它在所有 OSX 设备上都可用)。因此,我将演示文稿设计为一个视图,应该在 OSX 和 iOS 上尽可能以几乎相同的方式呈现。

为此,我从 iOS 中开始使用一些简单的视图绘图内容,现在我正在重新配置代码以便可以将其移植到 OSX。到目前为止,我的策略是将所有对 UIView / UIWindow / UIFont / UIColor 等的引用替换为 _View / _Window / _Font / _Color 等。对于 iOS 版本,我将包含一个名为 Wrapper.h 的文件,如下所示:

#define _Device UIDevice
#define _Application UIApplication
#define _ApplicationMain UIApplicationMain
#define _ApplicationDelegate UIApplicationDelegate
#define _Responder UIResponder
#define _Window UIWindow

...使用基于 NS 的 OSX 定义(NSWindows 等)我知道一些细节会改变(比如视图中的 Y 坐标),但我可以处理。

我认为我不能像这样映射的唯一组件是手势识别器,因为 OSX 没有等效组件。我打算让它们成为在 iOS 包装器中实现的通用调用,并在 OSX 包装器中存根,因为我真的不需要 OSX 中的点击事件。

好主意?馊主意?有没有更好的方法来解决这个问题?谢谢...

4

1 回答 1

5

到目前为止,我的策略是将所有对 UIView / UIWindow / UIFont / UIColor 等的引用替换为 _View / _Window / _Font / _Color 等。

UIKit 不仅仅是 AppKit,所有出现的“NS”都更改为“UI”。尽管有很强的相似之处,但框架的工作方式和用户期望使用每个框架编写的软件的方式也存在重要差异。是否可以编写一个同时使用 UIKit 和 AppKit 实现的框架?毫无疑问,但您最终会遇到一些阻碍您充分利用这两个平台的东西。

好主意?馊主意?有没有更好的方法来解决这个问题?

海事组织,坏主意。如果您在设计数据模型方面做得很好,您应该能够在 Mac 和 iOS 实现之间共享它而无需更改。然后,与其花大量时间试图弄清楚如何编写一个单一的用户界面并想出一些双方都可以妥协的东西,不如把精力放在创建在两个平台上都引人注目的独立用户界面上。

于 2013-01-26T04:31:21.120 回答