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

Boo*_*oon 11 swift

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

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

Ser*_*gGr 11

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

答案取决于"所有Swift模块/标准库"的含义.

如果您对Swift的标准库感兴趣(即String或者类似于cla Array),则Swift由Apple开源,您可以在https://swift.org/source-code/上找到github上的源代码.似乎没有办法"附加"这些来源从你的XCode项目导航到那里.

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

与Android不同,iOS是一种专有的闭源操作系统,在大多数领域,Apple无意与大家分享其代码.

附注:一旦声称Apple将其工具从GCC堆栈切换到Clang/LLVM堆栈的一个主要原因是GCC是根据"copyleft"GPL许可的,因此Apple无法集成部分GCC Obj-C后端(例如代码分析或对重构有用的东西)进入XCode,即使这些部分是由Apple自己开发的,而不是整个XCode开源.另一方面,Clang/LLVM使用更宽松的开源许可证,允许此类第三方使用.

此外,Apple的大部分内部代码仍然必须使用Objective-C甚至是纯C而不是Swift.将"头"(即从Obj-C到Swift的接口规范)自动转换是相对容易的,但实际上很难实现,特别是Obj-C和Swift之间存在差异.所以即使它是开源的,Swift也不会有调试.

从积极的方面来说:一些代码被执行,Apple无法隐藏它,因此你可以调试它.唯一的问题是代码是用XCode有助于解码为Assembly(x86或ARM)的机器语言.然而,显然需要一些技巧和时间来理解任何非平凡的逻辑.请注意,在不违反某些版权法的情况下,您可能无法复制逻辑.