苹果iOS开发者指南规定:
3.3.2 — 应用程序本身不得通过任何方式安装或启动其他可执行代码,包括但不限于使用插件架构、调用其他框架、其他API或其他方式。在应用程序中不能下载或使用解释性代码,除了由Apple的文档化API和内置解释器所解释并运行的代码。
假设在运行时允许下载数据(如XML和图片,或游戏级别描述等),我想知道他们在“数据”和“代码”之间划界的位置。 想象一下,一个应用程序向用户提供互动“演示”(例如调查)。 演示材料不断添加到服务器上,并且不同的演示材料对不同的用户可用,因此它们不能成为初始应用程序下载的一部分(这就是重点所在)。 它们以XML格式描述,但由于是互动的,它们可能包含以下条件分支(以伪代码形式展示):
<options id="Gender">
<option value="1">Male</option>
<option value="2">Female</option>
</options>
<branches id="Gender">
<branch value="1">
<image src="Man" />
</branch>
<branch value="2">
<image src="Woman" />
</branch>
</branches>
当这个XML被解释并在应用程序内“播放”时,以上内容将分为两步呈现。首先显示选择屏幕,在此屏幕上,用户可以单击两个选项之一(“男性”或“女性”)。接下来,根据前一步骤所做的选择,将会动态[下载]并显示一张图片。
现在,从这个例子中,很容易想象出描述进一步逻辑的其他标签。例如,一个包含标签可以被添加:
<loop count="3">
<options... />
<branches... />
</loop>
这里的结果是选择屏幕/图像屏幕对将被连续呈现三次,当然。或者想象一下描述游戏中一个关卡的格式。这可能自然而然地被视为被动“数据”,但如果它包括用户可以通过的几个门,以及附加有各种触发器、陷阱和点等- 那不就是使用脚本(或者解释代码)描述执行序列、选项及其条件反应吗?
假设数据的解释引擎已经存在于应用程序中,并且此类“演示”只能在应用程序中使用(不能创建或编辑),那么这与苹果的iOS指南相比如何?在这种情况下,XML是否基本上构成了一种脚本语言(任何解释型语言中的程序都可以用XML描述)?
如果专有脚本语言(参考上面使用的XML)严格被沙箱化(他们怎么知道?)并且无法以任何方式访问操作系统(但能够动态下载内容-例如调查或游戏级别-并上传结果-回答或分数-到作者服务器),这样做是否可以接受?
线条在哪里划过?