Swift代码能替代Objective-C在Codename One本地代码中使用吗?

7
我需要在我的Codename One应用程序中插入本地代码。 我完全是iOS编程的新手,所以我需要学习Objective-C。 但是我读到Swift是Objective-C的继承者,我会更喜欢使用Swift语法。 但我不知道Codename One是否支持Swift。 查看由Codename One生成的iOS源代码时,虽然我不确定,但它看起来像C代码(我可能错了)。
在他的博客中,Shannah(来自Codename One){{link1:写道}}

Codename One目前将所有内容编译成普通的C代码,因此我们将受到这种变化的影响很小-尽管某些使用Objective-C的本机部分需要更新。 幸运的是,如果您是Codename One用户,则无需关心这些细节,因为您正在使用Java。

我没有明白清楚,这就是为什么我问是否可以在Codename One本地代码中使用Swift代码?
非常感谢您帮助我澄清这个话题!
干杯

想知道你是怎么做到这个的吗?我也有同样的问题。 - app-dev
1个回答

1
是和不是。今天你可能可以将Swift代码编译为静态库(.a文件),并像任何静态库一样使用它,其中Objective-C代码只充当桥梁。由于几个因素,直接使用Swift存在问题:
  • 当前我们仍在使用旧版本的xcode进行构建,我们尝试过迁移到最新版本(链接1),但遇到了挫折。如果3.5发布前没有完成迁移,那么很快就会完成。Swift需要相对较新的xcode版本,因此在我们完成迁移之前,嵌入Swift代码将存在问题。

  • Swift假定ARC。这是我们试图与GC集成但目前效果不佳的内容。

  • 我们需要将Swift存根生成为选项,这可能会产生问题,例如,如果您有依赖于Objective-C的现有cn1lib或本地接口,则可能会创建冲突。

但是让我们回到一点。Swift相对于现在已经相当老的Objective-C来说是一个巨大的优势。但是它对Codename One开发人员没有任何主要优势...
  • 它不比Codename One翻译成更快的C语言更快,Swift和Objective-C都不如。

  • 它不会使代码更加清晰,如果您在本地界面中有很多代码,则表示您做错了什么。大部分代码都是Java编写的,您可以辩论Java与Swift的优点,但是如果您使用Codename One,则几乎选择了Java。

  • 如果您需要使用用Swift编写的应用程序,则可以将其打包为静态库。

因此,在这个时候,Swift在Codename One中真正没有实际用途。


谢谢您详尽的回答。我需要编写的本地代码很少,但我仍然需要学习它。因此,我更喜欢学习一些现代的东西而不是过时的东西。但我理解了您的观点;-) - HelloWorld
这个回答是最新的吗?我想在iOS上使用一个原生库来调用相机,我看到有几个库是用Swift编写的:它们不是直接可用的吗?我对Xcode完全陌生,我需要比Capture API和Camera Kit cn1Lib更多的东西。 - Francesco Galgani
是的,但您仍然可以使用用Swift编写的已编译库,因为Swift和Objective-C大多兼容。大多数这样的库都可以使用cocoapods安装并“原样”使用。 - Shai Almog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接