【发布时间】:2018-07-02 05:29:25
【问题描述】:
我正在尝试将目标 c 转换为 swift 用于第三方框架。 swift语言有什么限制吗?
【问题讨论】:
-
您尝试过使用桥接头吗?
-
没有。只有迅速。
标签: ios objective-c swift xcode macos
我正在尝试将目标 c 转换为 swift 用于第三方框架。 swift语言有什么限制吗?
【问题讨论】:
标签: ios objective-c swift xcode macos
您需要更具体地询问,但 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 版本之间中断。”
这里:
摘录:
"1.) 方法混搭
2.) C++ 互操作
3.) 执行选择器:
4.) KVO
5.) 复杂宏"
【讨论】:
我相信你几乎可以用 Swift 完成 obj-c 可以做的所有事情。作为 Swift 开发人员,我唯一需要使用 obj-c 的时候是在处理一些晦涩难懂的 Apple API 时,但我认为您自己的第三方框架不太可能需要它们。
【讨论】: