首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否禁止在AppStore的iOS应用中使用即时编译代码?

是否禁止在AppStore的iOS应用中使用即时编译代码?
EN

Stack Overflow用户
提问于 2011-02-20 09:35:27
回答 3查看 12.6K关注 0票数 22

我听说在iOS AppStore中不允许即时编译的代码,因为禁止将可执行代码放在堆中。是这样吗?还是只是个谣言?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-25 03:27:18

不允许使用

  1. 可安装代码("or“是3.3.2中的关键字)。所有内容(除了Javascript)都必须静态链接。
  2. 即时编译为Javascript源代码文本似乎是允许的。(不是开玩笑,有一个商业编译器可以做到这一点。)编译成字节码以便由解释器执行编写的Javascript并在UIWebView中运行可能会使审查者感到困惑,从而可能拒绝执行此操作的应用程序。
  3. iOS安全沙箱可能会杀死任何试图跳转到任何动态生成的数据的应用程序。
票数 6
EN

Stack Overflow用户

发布于 2011-02-20 12:27:10

这就对了。您可以阅读iOS标准协议,在设置开发人员注册时需要接受该协议:

3.3.2应用程序不能下载或安装可执行代码。只有当所有脚本、代码和解释器都打包在应用程序中且未下载时,才能在应用程序中使用解释代码。唯一的例外是由苹果的内置WebKit框架下载并运行的脚本和代码。

票数 3
EN

Stack Overflow用户

发布于 2011-11-01 14:55:44

似乎允许将Javascript即时编译为

源代码文本。(不是开玩笑,有一个商业编译器可以做到这一点。)正在编译为字节码以供执行...

我还对在iOS上运行的编译器(不是即时编译器,而是真正的编程语言)进行了思考。我的想法是使用地址来实现伪操作码,而不是“传统的字节码”(每个伪操作码一个字节)。

一个ARM寄存器被保留为指向我的“字节码”的“代码指针”(这里称为"rCP")。伪操作码函数的最后一条指令是"ldmfd rCP!,{pc}“。这意味着函数的最后一条指令不是“返回”,而是跳转到下一个操作码。

使用这种方法,你会得到非常快的“字节码”。也许商业编译器是这样工作的。我不敢相信有一个在iOS上运行本机代码的即时编译器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5054732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档