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

标签 ios swift ipad llvm

iPad 版 Swift Playgrounds 应用如何执行代码?

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

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

最佳答案

Apple 的 general-audience 都不是也不developer营销 Material 只说 Swift Playgrounds 是“真正的代码”。但您可以自己验证(或至少找到一些强有力的证据)Swift Playgrounds 确实运行完整的编译器工具链并生成原生 arm64 代码。

提示:如果您在 Mac 上的 iTunes 中下载了 App Store 应用程序(我猜也可能是 Windows 机顶盒?),您可以在本地文件系统中找到相应的 .ipa 文件。除非您是啤酒爱好者,否则 IPA 只是 zip 存档,其中包含同步时安装到 iOS 设备上的应用程序包,因此您可以使用您喜欢的实用程序(包括 macOS 中的内置存档实用程序,或 unzip 命令行工具)并浏览一下它们的内部工作原理。

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

所以,是的——没有 Apple 的官方确认,看起来 Swift Playgrounds 可以在 iOS 设备上编译和运行 native 代码。 (如果你稍微考虑一下,否则这样做没有多大意义——在某种解释/模拟环境中运行 Swift 代码会降低性能。并且可能使 Apple 的 stated goal 提供对整个 iOS 的访问工具包非常困难。)

不,third-party apps still can't do that .自 2010 年以来,第三方应用程序可以使用提供嵌入式脚本环境的工具——游戏引擎使用它来加速游戏设计和开发,而其他应用程序则为 Python 提供编码环境。和 Lua , 例如。但您可能会想象,允许第三方应用程序编译和运行 native 代码可能是一场安全噩梦......

关于ios - Apple 的 iPad 版 Swift Playgrounds 应用程序如何执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593918/

相关文章:

jquery ui 对话框未出现在带有 Google Maps v3 的页面上

ios - 是否可以缓存auth token 以加快iOS平台在Firebase中的登录速度?

ios - 从异步回调更新 UI 的问题

ios - 定义 UIImage 将使用的文件 (Swift)

ios - 按下导航后退按钮时 SWRevealViewController 关闭左侧 View

macos - 禁用 NSTableView 行聚焦环

html - 在 ipad safari 上强制输入和选择框向下(而不是向上)打开

objective-c - iOS 7 CoreBluetooth retrievePeripheralsWithIdentifiers 不检索

xcode - 快速在页脚表格 View 中添加按钮

ios - 写入数据库失败?