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

时间:2017-02-07 17:48:13

标签: swift

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

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

2 个答案:

答案 0 :(得分:11)

  

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

答案取决于“所有Swift模块/标准库”的含义。

如果您对Swift的标准库感兴趣(例如StringArray等字段),那么Swift是Apple开源的,你可以在github上找到来自{{3的链接}}。似乎没有办法“附加”这些来源从你的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)的机器语言。然而,显然需要一些技巧和时间来理解任何非平凡的逻辑。请注意,如果不违反某些版权法,您可能无法复制逻辑。

答案 1 :(得分:4)

Swift是开源的。所以你可以得到它的代码和模块here

但是,您无法通过命令+从您自己的项目中单击Xco​​de来执行此操作。实际上,你从命令+点击获得的代码不是Swift源代码。它们是由编译器自动生成的标头。这些头文件可以从Swift源代码生成,甚至可以从Objective-C代码生成。

此外,即使您可以获取源代码并对其进行编辑,也无法在您希望发布到App Store的应用上使用它。您只能使用随附Xcode的Swift发布到App Store,否则您的应用将被拒绝。