【问题标题】:While converting third party library from objective c into swift , is any restriction for swift? [closed]在将第三方库从目标 c 转换为 swift 时,对 swift 有任何限制吗? [关闭]
【发布时间】:2018-07-02 05:29:25
【问题描述】:

我正在尝试将目标 c 转换为 swift 用于第三方框架。 swift语言有什么限制吗?

【问题讨论】:

  • 您尝试过使用桥接头吗?
  • 没有。只有迅速。

标签: ios objective-c swift xcode macos


【解决方案1】:

您需要更具体地询问,但 Swift 仍然不是 ABI 稳定的,不推荐用于二进制可分发框架。使用 Apple Objective C 框架在 Swift 中仍然无法完成一些晦涩难懂的事情,而您需要在 Objective C 中完成这些事情。

你可以在这里找到信息:

https://swift.org/abi-stability/

摘录:

“目前 Swift 的首要任务之一是与未来 Swift 版本之间的兼容性。其中一个主要组成部分是 ABI 稳定性,它可以在使用不同版本的 Swift 编译的应用程序和库之间实现二进制兼容性。Swift ABI Manifesto 描述了在宣布 ABI 稳定之前需要完成的工程和设计任务。”

这里:

https://www.reddit.com/r/swift/comments/67z7dy/what_is_abi_stability_and_why_does_it_matter/

摘录:

“当一种语言是 ABI 稳定的(应用程序二进制接口)时,这意味着它与操作系统本身打包并链接,在这种情况下:iOS。你在计算机上编译的 Swift 代码有一个二进制接口到操作系统本身,而不是与应用程序捆绑的任何动态库。因此,Apple 必须能够保证我的 Swift 代码在编译为机器代码(bitcode、LLVM-IR、yada-yada)时能够与操作系统的其余部分正确交互,并且(可能更重要的是)不会在 iOS / Swift 版本之间中断。”

这里:

https://medium.com/@markohlebar/5-things-you-can-do-in-objective-c-but-cant-do-in-pure-swift-31bb66b4aab8

摘录:

"1.) 方法混搭

2.) C++ 互操作

3.) 执行选择器:

4.) KVO

5.) 复杂宏"

【讨论】:

    【解决方案2】:

    我相信你几乎可以用 Swift 完成 obj-c 可以做的所有事情。作为 Swift 开发人员,我唯一需要使用 obj-c 的时候是在处理一些晦涩难懂的 Apple API 时,但我认为您自己的第三方框架不太可能需要它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多