Apple 的 iPad 版 Swift Playgrounds 应用程序如何执行代码?
Posted
技术标签:
【中文标题】Apple 的 iPad 版 Swift Playgrounds 应用程序如何执行代码?【英文标题】:How does Apple's Swift Playgrounds app for iPad execute code? 【发布时间】:2016-11-14 16:54:42 【问题描述】:适用于 iPad 的 Swift Playgrounds 应用程序如何执行代码?
他们是否将 LLVM 工具链移植到 ARM 并进行了动态编译,或者他们是否使用完全不同的方式来执行 Swift 代码?
如何在 ios 中完成类似的事情(即动态执行 Swift 代码)?
【问题讨论】:
使用前请阅读apple标签的说明。它清楚地标明“请勿使用”。 【参考方案1】:Apple 的 general-audience 和 developer 营销材料都没有说明 Swift Playgrounds 是“真正的代码”。但您可以自己验证(或至少找到一些强有力的证据)Swift Playgrounds 确实运行完整的编译器工具链并生成原生 arm64 代码。
提示:如果您在 Mac 上的 iTunes 中下载 App Store 应用程序(或者我猜也是 Windows 设备?),您可以在本地文件系统中找到相应的 .ipa
文件。除非您是啤酒爱好者,否则 IPA 只是 zip 存档,其中包含在您同步时安装到 iOS 设备上的应用程序包,因此您可以使用您喜欢的实用程序(包括 macOS 中的内置存档实用程序,或 @987654330 @ 命令行工具)并稍微研究一下它们的内部工作原理。
如果您使用 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 年以来,第三方应用程序可以使用提供嵌入式脚本环境的工具——游戏引擎使用它来加速游戏设计和开发,而其他应用程序则为 Python 和 Lua 提供编码环境。但您大概可以想象,允许第三方应用编译和运行原生代码可能是一场安全噩梦……
【讨论】:
以上是关于Apple 的 iPad 版 Swift Playgrounds 应用程序如何执行代码?的主要内容,如果未能解决你的问题,请参考以下文章
在 iPad 版 Swift Playgrounds 中显示 TableView
将图像插入 iPad 版 Swift Playgrounds