Можно ли разработать собственные приложения для iPhone в Ruby?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

49
задан pasawaya 24 July 2012 в 14:17
поделиться

14 ответов

Нет, Вы корректны. В настоящее время, и скорее всего для обозримого будущего, Ruby не будет опцией, по крайней мере, для приложений AppStore. Нет никакой причины, которую Вы не могли сделать, это по Взломанному телефону, но Apple довольно связано узами брака с Objective C для официальной разработки.

22
ответ дан Ben Gottlieb 7 November 2019 в 11:14
поделиться

Мост Какао Ruby, вероятно, не будет работать. Большинство мостов для динамических языков должно генерировать исполняемых преобразователей (или вручную или с libffi). Более ограниченные мосты (для большего количества статических языков) не могут иметь таких проблем.

Так или иначе, поднимая мост, вероятно, собирается потребовать становления более знакомым со временем выполнения Objective C, чем каждый был бы, просто учась, как записать Сенсорные приложения Какао, который, вероятно, побеждает точку выполнения его во-первых.

0
ответ дан Louis Gerbarg 7 November 2019 в 11:14
поделиться

Существует открытый исходный код мост Какао Ruby , Вы могли бы попытаться получить работу. Но я заключаю, что существует что-то вроде несоответствия импеданса между Ruby и ObjC, который делает немного неудобным использовать.

0
ответ дан Menkboy 7 November 2019 в 11:14
поделиться

Вы не должны использовать Objective C для записи приложений для iPhone. При использовании QuickConnectiPhone, http://sourceforge.net/projects/quickconnect/ , можно записать его полностью в JavaScript, CSS и HTML и все еще иметь устанавливаемое приложение не веб-приложение.

, Если Вы знаете рубин, Вы уже, вероятно, работаете с JavaScript.

, Чтобы видеть, как установить его, выполните его, и другие идеи переходят к tetontech.wordpress.com

1
ответ дан Lee 7 November 2019 в 11:14
поделиться

Я предполагаю, что это не будет работать правильно теперь, но я предположил бы, что Вы в конечном счете будете в состоянии использовать MacRuby для создания приложений для iPhone. Apple помещает большую работу в него

, Вот ссылка на статью ADC, описывающую, как создать нормальные приложения какао

1
ответ дан Orion Edwards 7 November 2019 в 11:14
поделиться

На самом деле рубиновый мост какао не является неловким вообще; вещи работают замечательно гладко, право вниз на соединяющиеся выходы в IB и т.д. Получающийся код снижается на красивое право.

Что касается разработки iPhone, если Вы хотите официальное приложение AppStore, Вы являетесь неудачливыми, к сожалению. Apple, продиктованная тот iPhone, является Касанием Obj-C/Cocoa, и существует пункт в лицензии SDK, говоря, что одна из вещей, для которых они будут отклонять приложение, имеет ИНТЕРПРЕТАТОР/JIT-КОМПИЛЯТОР языка, таким образом, Вы не могли добавить рубиновый интерпретатор в своем приложении сами.

Вне темы, но весело, это - то, почему Flash для iPhone является Adobe, уносящий дым. Они не могли получить swf плеер на AppStore, даже если бы они хотели на лицензию Apple.

7
ответ дан Jon Raphaelson 7 November 2019 в 11:14
поделиться

rhomobile является опцией выполнить код Ruby на iPhone, но это - разработка чрезвычайно веб-приложения. Веб-сервер работает локально на iPhone и Вашем рендеринге кода Ruby к стандартным клиентским веб-технологиям (html/css/javascript).

http://rhomobile.com/

8
ответ дан pfeilbr 7 November 2019 в 11:14
поделиться

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

я нашел, что вещи, которые Вы изучаете на других языках часто, делают Вас лучшим программистом и дают Вам новое понимание других языков, которые Вы уже знаете.

11
ответ дан Kendall Helmstetter Gelner 7 November 2019 в 11:14
поделиться

В iPhone OS, mprotect () перестанет работать, при попытке использовать ее для маркировки перезаписываемых разделов памяти как исполняемый файл. Это повреждает мосты как RubyCocoa (и вероятно MacRuby) что использование libffi для создания обработчиков методов Objective C во времени выполнения. Я полагаю, что это дизайном, потому что он не всегда имел место.

В конечном счете, это - больше вопрос политики платформы, чем технология, но техническое обходное решение для этого существует. Вместо того, чтобы генерировать обработчики пользовательских методов во времени выполнения, предварительно скомпилируйте пул реконфигурируемых, которые назначены необходимый, по существу делая процесс образования моста совершенно управляемым данными. Насколько я знаю, это еще не делается в RubyCocoa или MacRuby.

Другая значительная вещь рассмотреть состоит в том, что скомпилированный Ruby и время выполнения RubyCocoa могут быть значительно больше, чем скомпилированные приложения Objective C. Если бы эти библиотеки были доступны на iPhone, это не было бы проблемой, но на данный момент, даже если бы у Вас была работа RubyCocoa, Вы не могли бы хотеть использовать его для приложений, которые Вы распределяете.

49
ответ дан Tim Burks 7 November 2019 в 11:14
поделиться

Мм, Rhodes (Rhomobile) действительно позволяет создавать собственные приложения на iPhone и всех других смартфонах. Да, мы используем рендеринг через элемент управления WebUIView. Но мы разрешаем все возможности устройства и синхронизируемые локальные данные.

4
ответ дан 7 November 2019 в 11:14
поделиться

Возможно, вам стоит взглянуть на shinycocos . Это дочерний проект cocos2d-iphone , среды программирования игр Objective-C для iPhone.

Я еще не играл с ним, но из git README я сделал вывод, что он включает Ruby 1.9.1 в ваше приложение.

4
ответ дан 7 November 2019 в 11:14
поделиться

Одним из возможных решений может быть создание приложения-оболочки, например, библиотеки рисов (google it), которая включает ruby-vm. Я считаю, что вы сможете создавать оболочки C ++, которые можно будет открыть для ruby, тем самым создав среду для разработки iphone с помощью ruby. Это, вероятно, потребует много работы ^^

-1
ответ дан 7 November 2019 в 11:14
поделиться

Посмотрите на http://www.appcelerator.com/products/titanium-mobile/. "Родные приложения для iPhone и Android, созданные с помощью веб-технологий."

Звучит неплохо, не правда ли? ;-)

2
ответ дан 7 November 2019 в 11:14
поделиться

Я установил пакет ruby ​​из Cydia на свой iPod Touch 1G с джейлбрейком на 3.1.3:

image

Кажется, работает.

Что касается прикосновения к какао, я полагаю, это совсем другая история.

4
ответ дан 7 November 2019 в 11:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: