重写 iOS 应用程序以在 iOS 和 Mac 上运行——如何组织控制器代码?

Posted

技术标签:

【中文标题】重写 iOS 应用程序以在 iOS 和 Mac 上运行——如何组织控制器代码?【英文标题】:rewriting an iOS app to work on both iOS and Mac-- how to organize controller code? 【发布时间】:2011-01-23 01:36:05 【问题描述】:

我有一个 ios 应用程序,我正在重写它以在 Mac 和 iOS 上运行。我的观点运作良好,但目前一切都是静态的。

我通常如何处理我的视图控制器代码?在仅限 iOS 的应用程序中,它通常是一堆内容,例如“如果用户触摸这里,请执行此操作”。

我找到了 hitTest: 方法。所以我很确定我可以写出所有的东西,这样它就可以工作了。我想我的问题更具组织性。理想情况下,我希望进行设置,以便当前位于 UIViewController 子类中的代码可以在两个平台上运行。

【问题讨论】:

【参考方案1】:

您将无法使 UIViewController 代码在两个平台上都工作。 Mac 没有 UIKit,iPhone 没有 AppKit。

此时您真正想做的是将所有网络、数学和逻辑代码放在外部课程中。通常是 NSObject 的子类。然后,您所要做的就是编写在视图控制器中调用这些类的代码。

不过,您将面临另一项挑战 - 我认为您无法通过一个 Bundle 在 iPhone 和 Mac 上运行应用程序。当你编译你的应用程序时,你通常编译到一个特定的处理器。 Mac 在 Intel/PowerPC 上运行,iPhone 在 Arm 上运行。您将不得不无休止地摆弄构建目标等。

我建议维护两个单独的项目,并将上述逻辑类放在共享位置,并确保在导入它们时不要选择“复制到组目标文件夹”选项。这样一来,您对 iPhone 版本的代码所做的任何编辑都会跨过 Mac 版本,反之亦然。

编码愉快,

赞恩

【讨论】:

以上是关于重写 iOS 应用程序以在 iOS 和 Mac 上运行——如何组织控制器代码?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 iOS 或 mac 应用程序中使用 C++ 代码吗?

此 iOS SDK 不支持手机上的 iOS 版本

如何配置我的 Xcode 项目以在多个版本的 iOS 上运行?

你如何为设备和模拟器编译 PJSip iPhone 以在 iOS 3 和 iOS 4 上使用虹吸管?

为啥我不能在 iOS 上离开键盘以在 React Native App 中发送帖子?

iOS:将图像保存在 App Group 中以在 Apple Watch 上使用