gpt4 book ai didi

iphone - 适用于 iOS 和 Mac OS X 的跨平台方法是什么?

转载 作者:行者123 更新时间:2023-12-03 16:19:05 26 4
gpt4 key购买 nike

对于设备跨平台框架(iPhone + Android)和桌面跨平台框架(Mac + Win + Linux)似乎有很多答案。这是一个不同的问题,涉及合适的框架、方法、模板应用程序、教程或只是有用的提示,涉及开发在设备操作系统和桌面操作系统之间跨平台移植的 native 应用程序(不仅仅是 Web 应用程序)。

我想编写一个应用程序,既可以在我的 iPhone(或 iPad)上运行,也可以编译为在 Mac OS X 上 native 运行(而不仅仅是在模拟器中运行)。我愿意只使用两个平台都通用的基本 UI 元素(只有 1 个窗口、通用按钮、文本字段等)

构建一对应用程序的最佳方法是什么,只需最少数量的 #ifdef 和其他特定于平台的代码重写,即可在我的 iPhone 和 MacBook 上运行?

最佳答案

使用标准 UI 控件没有简单的方法可以做到这一点。 AppKit 和 UIKit 是完全不同的动物。即使是基本的UIView和NSView在结构和功能上也有很大的不同。在那个级别,您将看不到任何可以跨平台的内容。

但是,有些显示元素只需进行最少的更改即可在 Mac 和 iOS 上运行。核心动画 CALayers 就是这样的元素之一,因为它们在 Mac OS X 和 iOS 上是相同的。这就是为什么我们选择使用它们作为 Core Plot 的基础框架,它使用几乎相同的代码库在 Mac 和 iOS 上显示图形。有一些特定于平台的东西需要调整(例如 UIView 应用于其支持层的倒置坐标系),但大多数代码将转换为两个平台。

你提到编写游戏。如果您为此使用 OpenGL ES,您编写的大部分渲染代码也可以在 Mac 上运行。您需要更改一些内容,但大多数情况下 OpenGL ES 是桌面 OpenGL 的子集。然而,对于一个简单的 2-D 游戏,我建议坚持使用核心动画,除非你真的在性能方面遇到了瓶颈,因为你将编写更少的代码。

到目前为止我提到的项目都属于模型- View - Controller 设计模式的 View 部分。您的 Controller 代码将是特定于应用程序的,但您可以使大部分代码独立于平台。如果您使用一个简单的模型,甚至是依赖 SQLite 或 Core Data 进行持久化的模型,那么使用相同的代码在 Mac 和 iOS 上工作应该是微不足道的。

Mac 应用程序和 iOS 应用程序(甚至在不同的 iOS 设备之间)将具有非常不同的核心设计。你不能只是把一些东西从一个平台硬塞到另一个平台上。游戏可能比其他任何东西都更便携,但您仍然需要进行一些自定义工作以反射(reflect)每个计算设备的独特属性。

关于iphone - 适用于 iOS 和 Mac OS X 的跨平台方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3596455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com