Подтвердить что ты не робот

Насколько велика приложение iPhone Objective-C против приложения MonoTouch?

Я рассматриваю использование MonoTouch для разработки iPhone, но размер полезной нагрузки является важным фактором.

Для пользователя, который ранее не устанавливал Mono на своем iPhone, какой размер приложения Objective-C Hello World будет сравниваться с приложением MonoTouch "Hello World"?

Более конкретно, что такое ок. количество байтов, которые необходимо загрузить, и что такое ок. количество используемых байтов после установки?

4b9b3361

Ответ 1

Программа "Hello world" в Objective-C занимает 50 килобайт (вся папка .app). С MonoTouch аналогичное приложение Hello World занимает 5 Мб (вся папка .app), что совсем не плохо, учитывая, что в нем есть среда выполнения с мусорной коллекцией.

Ответ 2

В 1.5 Monotouch

Сборка релиза - это приложение, созданное с лицензией на распространение - и с только настройками проекта по умолчанию, составляет 5 МБ. Из этих 4,3 МБ - двоичный исполняемый файл.

По моему опыту они часто увеличиваются до 10 МБ, и форумы рисуют ту же картину. Магазин приложений сообщает о разархивированном размере, однако они загружаются в архиве. В архиве это около 3 МБ, что даже на 3G, хорошо.

На мой взгляд, большинство людей не будут смотреть на размер файла перед загрузкой приложения, и особенно не заботятся. Ограничение на скачивание 3G в магазине приложений теперь составляет 20 МБ, что вполне соответствует размеру MonoTouch.

Да, если вы играете за адвоката дьявола, это на много порядков больше, чем у Objective-C, и может отпугнуть нескольких людей, которые беспокоятся о том, чтобы занять на 4-10 МБ больше своих 16 ГБ. Однако есть также время для выхода на рынок и существующих инструментов, доступных для .NET. Я разрабатываю и собираю все свои приложения MonoTouch в Visual Studio 2010, затем тестирую их на Mac, и я не думаю, что даже Apple будет утверждать, что их IDE близка к лидеру отрасли.

Ответ 3

Из этого вопроса в MonoTouch и размер исполняемых файлов:

MonoTouch не переводит на Obj-c. Он компилируется в .NET IL, затем компилирует (таким же образом компилятор JIT, но до run - следовательно, компилятор "раньше времени" ) в собственный ARM-код.

так:

Obj-C → GCC (или LLVM) → код ARM

vrs MT:

С# → IL → (компилятор AOT) → Код ARM

Выходные двоичные файлы в 3.x больше, потому что вы также включаете много .NET framework (ну, Mono Framework, но то же самое), так что если вы, например, используете System.Xml, он должен включать это в вывод - то же самое с System.dll и т.д. Компонент довольно умный, но вывод бинарные файлы всегда будут больше.

Для меня важна только величина времени загрузки и замятие двоичный размер. Zipped binary для приложения "hello world" составляет около 2.5-3meg(меньше в 4.x Мне сказали) vrs о 300k для obj-c. Разница становится все меньше и меньше, чем больше вы добавляете, так как он включает только таких, как system.dll один раз. Время загрузки для MT vrs Obj-c, делая то же самое в в то же время, достаточно близко к тому же. Либо можно сделать медленно загружайте (просто сделайте что-то долгое время в своем FinishedLaunching не помещая его в другой поток).

Далее ответчик говорит, что он чувствует себя более продуктивным с MonoTouch, чем Objective-C. YMMV.