Hel*_*rld 7 native-code ios codenameone swift
我需要在我的Codename One应用程序中插入本机代码.我是iOS编程的全新手,所以我需要学习Objective-C.但是我读到Swift是Objective-C的继承者,我觉得Swift语法更舒服.但我不知道是否在Codename One中支持Swift.在查看由Codename One生成的iOS源代码时,虽然我不是100%肯定,但它看起来像C代码(我可能错了).
在他的博客上,Shannah(来自Codename One)写道
Codename One目前将所有内容编译为普通的旧C代码,因此我们在很大程度上不会受到这种更改的影响 - 尽管会有一些本机部分使用需要更新的Objective-C.幸运的是,如果您是Codename One用户,则无需关注这些细节,因为您使用的是Java.
我不清楚这就是为什么我在询问是否可以在Codename One本机代码中使用Swift代码?
非常感谢帮助我澄清这个话题!
干杯
是和不是。现在,您可能可以将 Swift 代码编译为静态库(.a 文件),然后像任何静态库一样使用它,其中 Objective-C 代码仅充当桥梁。
由于以下几个因素,直接使用 Swift 会出现问题:
目前我们在构建时仍在使用旧版本的 xcode,我们尝试迁移到最新版本但遇到了挫折。我们希望在 3.5 发布之前进行迁移,如果不是的话,也会在不久之后进行。
Swift 需要相对较新版本的 xcode,因此在我们这样做之前,嵌入 Swift 代码将会出现问题。
Swift 采用 ARC。这是我们尝试与 GC 集成的东西,但目前效果并不好。
我们需要生成 Swift 存根作为一个选项,这是有问题的,因为假设您有依赖于 Objective-C 的现有 cn1lib 或本机接口,它可能会产生冲突。
但让我们回溯一下。Swift 相对于 Objective-C 来说有一个巨大的优势,而 Objective-C 已经很老了。但它对于 Codename One 开发者来说并没有任何重大优势......
它并不比 Codename One 转换为 C 更快,而 C 比 Swift 和 Objective-C 都快
它不会使代码变得更加干净,如果您的本机接口中有很多代码,那么您就做错了。无论如何,你的大部分代码都是用 Java 编写的,你可以争论 Java 与 Swift 的优点,但如果你使用 Codename One,那么你几乎会选择 Java。
如果您需要使用用 Swift 编写的应用程序,您可以将其打包为静态库。
所以目前代号一号中确实没有 Swift 的实际用例。
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |