В руководстве для разработчиков Apple iOS указано:
3.3.2. Приложение не может самостоятельно устанавливать или запускать другой исполняемый код любыми способами, включая без ограничений, с помощью архитектуры подключаемого модуля, вызова других фреймворков, других API или иным образом. Никакой интерпретируемый код не может быть загружен или использован в приложении, кроме кода, который интерпретируется и запускается API-интерфейсами Apple Documented и встроенными интерпретаторами.
Предполагая, что загрузка данных, таких как 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>
Результат состоит в том, что пара экрана выбора/экрана изображения будет последовательно представлена три раза, конечно.
Или представьте какой-то формат, описывающий уровень в игре. По-видимому, естественно рассматривать это как пассивные "данные", но если в него входят, скажем, несколько дверных проемов, которые пользователь может пройти, и с различными триггерами, ловушками и точками, прикрепленными к ним и т.д. - это не то же самое, что использовать script (или, действительно, интерпретируемый код) - описать последовательности выполнения, варианты и их условные ответы?
Предполагая, что механизм интерпретации данных уже присутствует в приложении и что такие "презентации" могут быть использованы только (не созданы или отредактированы) в приложении, как это будет связано с рекомендациями Apple iOS? Разве XML не является языком сценариев в этом смысле (не может ли описана какая-либо программа в интерпретируемом языке в XML)?
Было бы хорошо, если бы собственный скриптовый язык (ссылка на XML, использованный выше) был строго изолирован (как они могут сказать?) и не предоставлял доступ к операционной системе каким-либо образом (но мог загружать контент - например, опрос или игровой уровень - динамически, а также загружать результаты - ответы или оценки - на сервер разработки)?
Где идет линия?