swift - 如何从 Xcode 中访问所有 Swift 标准库源代码或模块定义?

标签 swift

目前我们可以通过命令+单击特定的 Swift 类型来访问 Swift 中的特定模块。有没有办法从 Xcode 中轻松访问所有 Swift 模块/标准库?

有没有办法像在 Android 中一样调试 Swift 源代码?

最佳答案

Is there a way to debug into Swift source code like one can in Android?

答案取决于您所说的“所有 Swift 模块/标准库”是什么意思。

如果您对 Swift 的标准库感兴趣(即像 StringArray 这样的类),那么 Swift 是由 Apple 开源的,您可以在 github 上找到源代码以下链接来自 https://swift.org/source-code/ .似乎仍然没有办法“附加”这些源代码以从您的 XCode 项目导航到那里。

但是,如果您对大多数 MacOS 或 iOS 框架感兴趣,例如 UIKit 和许多其他框架,那么我相信答案是NO.

与 Android 不同,iOS 是一个专有的闭源操作系统,在大多数领域,Apple 无意与所有人共享其代码。

旁注:曾经有人声称 Apple 将其工具从 GCC 堆栈切换到 Clang/LLVM 堆栈的主要原因之一是 GCC 是根据“copyleft”GPL 获得许可的,因此 Apple 无法集成 GCC Obj 的部分内容-C 后端(例如代码分析或对重构有用的东西)到 XCode 中,即使这些部分是由 Apple 自己开发的,而没有使整个 XCode 开源。另一方面,Clang/LLVM 使用更宽松的开源许可证,允许此类第 3 方使用。

此外,Apple 的大部分内部代码仍然必须使用 Objective-C 甚至纯 C 而不是 Swift。将“ header ”(即接口(interface)规范)从 Obj-C 自动转换为 Swift 相对容易,但对于实际实现来说非常困难,尤其是考虑到 Obj-C 和 Swift 之间的差异。所以即使它是开源的,也不会有 Swift 中的调试。

积极的一面:一些代码被执行,Apple 无法隐藏它,因此您可以调试它。唯一的问题是代码是机器语言,XCode 将其解码为汇编语言(x86 或 ARM)。然而,从中理解任何重要的逻辑显然需要一些技巧和时间。请注意,您可能无法在不违反某些版权法的情况下复制以这种方式找到的逻辑。

关于swift - 如何从 Xcode 中访问所有 Swift 标准库源代码或模块定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42096570/

相关文章:

ios - UIImagePickerController 不能在 Swift 中工作

swift - 在 Vapor 中使用第三方 OAuth API

swift - 为什么不在 Swift 中直接使用静态变量?

ios - 归档应用程序时找不到 Swift Objective-C header

ios - 安装 Pod 失败 : Undefined symbols for architecture x86_64

objective-c - 如何区分不同的NSTrackingAreas

ios - 如何将控制权从一个手势识别器传递给另一个

swift - 编辑-如何让 UIlabel 进入容器中间?

arrays - 如何迭代函数数组

ios - 搜索和过滤数组firebase数据swift3