ios – Apple的Swift Playgrounds应用程序如何执行代码?

用于iPad的 Swift Playgrounds应用程序如何执行代码

他们是否已将LLVM工具链移植到ARM并正在进行编译,或者他们是否使用完全不同的方式来执行Swift代码

如何在iOS中完成类似的操作(即动态执行Swift代码)?

解决方法

Apple的 general-audiencedeveloper营销材料都没有说Swift Playgrounds是“真正的代码”.但是可以自己验证(或者至少找到一些有力的证据)Swift Playgrounds确实运行完整的编译器工具链并生成本机arm64代码.

提示:如果您在Mac上的iTunes中下载App Store应用程序(或者也就是Windows框,我猜?),您可以在本地文件系统中找到相应的.ipa文件.除非您是啤酒人,否则IPA只是包含在您同步时安装到iOS设备上的应用程序包的zip存档,因此您可以使用自己喜欢的实用程序(包括macOS中的内置存档实用程序或解压缩命令)将其解压缩线工具)并在他们的内部工作中捅了一下.

如果您使用Swift Playgrounds执行此操作,您将找到几乎完整的Xcode中的SDK和工具链副本,包括一些特定于arm64架构的二进制文件链接文件. (您将找不到编译器和相关工具的任何命令行二进制文件,但是运行部分LLVM工具链as libraries并没有什么新内容.)您还可以在Swift编译器的开源代码中找到arm64 as a compiler-host architecture的一些证据.

所以,是的 – 没有Apple的官方确认,看起来Swift Playgrounds在iOS设备上编译和运行本机代码. (如果你仔细考虑一下,那么这样做没有多大意义 – 在某种解释/模拟环境中运行Swift代码会破坏性能.并且可能使Apple的stated goal提供对整个iOS工具包的访问难以置信难.)

并且不,third-party apps still can’t do that.自2010年以来,第三方应用程序可以使用提供嵌入式脚本环境的工具 – 游戏引擎使用它来加速游戏设计和安装.例如,开发和其他应用程序为PythonLua提供编码环境.但你可以想象允许第三方应用程序编译和运行本机代码可能是一场安全噩梦……

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...