Использование кода Ruby/Python в приложении iPhone OS?

Мое приложение должно пользоваться библиотекой, которая только доступна для Python и Ruby. От моего понимания Apple позволяет Ruby работать на iPhone, пока пользователи не могут выполнить произвольный код (Rhomobile использует Ruby).

Как я могу связать Ruby/Python своим приложением, вызвать функцию из моего кода Obj-C и получить результат (строка) назад в C или формате Obj-C?

5
задан igul222 23 April 2010 в 21:56
поделиться

1 ответ

Вы не можете. Новое соглашение SDK запрещает использование исходных языков, отличных от C, C ++ или Objective-C , а соглашение SDK всегда запрещало динамически интерпретировать код. Существует некоторая двусмысленность в отношении того, как эти правила будут применяться, но на всякий случай лучше избегать других языков, пока не будут устранены изломы.

РЕДАКТИРОВАТЬ: Кроме того, насколько мне известно, в настоящее время не существует технического способа запустить Python на iPhone согласно в этом вопросе . Я слышал о встраивании Lua в приложения для iPhone, но не о Python. Вы можете использовать Python с взломанным iPhone , но не через магазин приложений.

Ситуация с Ruby почти такая же плохая, как указано в этом вопросе . IPhone не поставляется с интерпретатором Ruby, а компиляторы далеки от работы. Rhomobile работает, упаковывая интерпретатор и фреймворк с исполняемым файлом, что, я очень сомневаюсь, выйдет за рамки нового соглашения о SDK. Если вы действительно хотите использовать Ruby, Rhomobile, вероятно, будет лучшим выбором (поскольку реализация вашего собственного интерпретатора, вероятно, потребует много работы и в равной степени вряд ли будет одобрена).На данный момент это довольно удручающая картина - самое большее, на что мы можем надеяться, это то, что MacRuby в конечном итоге заработает, и Apple одобрит его. Однако до этого еще далеко.

РЕДАКТИРОВАТЬ 2: Я также только что узнал о tinypy , который потенциально может работать на Python. Однако я сомневаюсь, что он будет запускать настоящие библиотеки.

3
ответ дан 14 December 2019 в 13:30
поделиться