2012-06-27 1 views
12

Мы хотим разработать приложение для смартфонов iOS и Android. В основном мы используем технологии Microsoft для разработки наших приложений. Мы думали, что если мы будем использовать MonoTouch и Mono для Android, нам нужно будет поддерживать только одну базу кода с другим уровнем пользовательского интерфейса для каждого устройства.Почему использование MonoTouch для разработки iPhone не рекомендуется?

Поскольку в настоящее время никто в нашей небольшой команде никогда не разрабатывал приложение для смартфонов, и нам нужно его быстро, мы хотим его передать на аутсорсинг. Мы спросили другие компании о том, передают ли они MonoTouch или Objective C для разработки iPhone. Большинство из них сказали, что они выбрали Objective C. Они сказали, что Objective C предлагает больше возможностей и возможностей, это быстрее, и для MonoTouch есть вероятность, что Apple больше не будет поддерживать его в будущем. Все ли это верно или есть другие причины, чтобы предпочесть Objective C? Я знаю, что вокруг этого есть другие темы, но они не отвечали на мои вопросы, особенно тот, который касается поддержки Apple MonoTouch.

+0

Возможный дубликат [Is MonoTouch - жизнеспособная платформа для разработки iPhone?] (Http://stackoverflow.com/questions/1847274/is-monotouch-a-viable-platform-for-iphone-development) –

+2

Это 2,5 года позже - я думаю, что все изменилось, что новый набор ответов не будет плохой идеей. –

+12

Похоже, что ни одна из компаний, с которыми вы разговаривали, не имеет реального опыта MonoTouch. –

ответ

40

приложений. Мы думали, что если мы будем использовать MonoTouch и Mono для Android , нам нужно будет поддерживать только одну базу кода с только одним слоем пользовательского интерфейса для каждого устройства .

Это возможность, если вы правильно структурируете свое приложение. Если нет: нет.

Если вы используете Java + ObjC + C# (для WP7/Win8 метро и т.д.), то это не вариант ВООБЩЕ

Потому что в настоящее время никто в нашем небольшой команды никогда не разработал приложение для смартфонов и мы нуждаемся в нем быстро, мы хотим передать его на аутсорсинг. Мы спросили у других компаний, есть ли они perfer MonoTouch или Objective C для разработки iPhone. Большинство из них сказал, что выбрал бы Objective C.

Если вы аутсорсинг, вы должны диктовать то, что вы хотите, это написано в, конечно? Если вам нужно поддерживать его в доме, и у вас есть только навыки C#, то MonoTouch и т. Д. Имеет больше смысла для вас, людей, оплачивающих счета!

Они сказали, что Objective C предлагает больше функциональных возможностей и возможностей,

FUD, а также некорректным. В Monotouch имеется полный API. Если это не там, как Xamarin связать его (что они делали часто раньше)

это быстрее

Я хотел бы видеть эталон. Да, технически, может быть быстрее в некоторых случаях, но в общем случае, MonoTouch так же или быстрее.

Ошибка программиста является более распространенной причиной проблем с производительностью приложений iOS. например, не получать вещи от потока пользовательского интерфейса (что проще сделать в MonoTouch, чем в ObjC, то блоки помогли это много) или слишком долго, чтобы выйти из FinishedLaunching («основной» метод, если хотите, это не очень ...)

Сбор мусора и такие вещи, как linq, xml/json синтаксический анализ, дженерики и коллекции, также очень ценны и очень быстр.

и MonoTouch есть шанс, что компания Apple не будет поддерживать его больше в будущем.

Да, есть шанс. Также есть шанс, что Тим Кук убежит с миллиардами Apple и купит все Гавайи (а не Ларри Эллисон «Я куплю этот остров»). Но шансы сейчас довольно тонкие.

Все это верно или есть другие причины, чтобы предпочесть Цель C? Я знаю, что есть другие темы, подобные этому, но они не ответили на мои вопросы, особенно тот, который касается поддержки Apple для для MonoTouch.

Apple не поддерживает MonoTouch. Xamarin делает, и они делают это исключительно хорошо. Apple не поддерживает ничего, кроме XCode, который является их продуктом.

Apple OES Разрешить Приложения MonoTouch (есть много). Другой способ взглянуть на это: как правило, 95% из 100 лучших игр написаны с использованием Unity3D, основанного на тех же методах (компиляция кода C# в скором времени и встраивание сокращенной версии среды Mono/.NET).

Есть причины предпочитать ObjC, которые были бы:

  • Вы уже знаете, ObjC и CocoaTouch и нравится.
  • Ваша команда уже знает ObjC и CocoaTouch, или вы можете легко нанять людей, которые это делают (обратите внимание: в настоящее время, насколько я знаю, разработчики iOS CRAZY дорого нанимают, если вы можете их получить)
  • Вам нужно использовать бета в тот день, когда они выходят. Имейте в виду, что вы можете использовать текущий MonoTouch и развернуть его на устройстве iOS [REDACTED] с бета-версией на нем. Вы просто не можете использовать новый материал в iOS6 YET (Xamarin сказал «около 2 недель», который должен быть примерно сейчас ...). Также имейте в виду, что вы не можете развернуть приложение в хранилище, которое создано с помощью бета-SDK, даже если вы не используете какой-либо материал в нем. Вы даже не можете указать iOS [REDACTED] в своем описании продукта (я пробовал)
  • вы любите [квадратные квадратики и TheOccasional: @ «странные синтаксические вещи»];

Теперь, будет ли создание кросс-платформы, совместное применение кода простым делом? КОНЕЧНО НЕТ. Это очень сложная часть разработки для нетривиального применения. Но это интересная часть разработки программного обеспечения: если бы это было легко, было бы скучно! Захватите книгу Грега Шкаков (http://www.amazon.com/dp/1449320236), чтобы узнать, что нужно для развития стиля iOS + WinPhone + Android.

+1

Благодарим вас за подробный ответ. Я также начал читать книгу, о которой вы упомянули, и пока довольно круто получить обзор. – chrinetr

+0

Отлично, рад, что вы сочли это интересным - я сейчас около 75%, это хорошо для понимания терминологических различий между тремя платформами. –

-2

Никакое тело не может точно сказать, что будет поддерживать яблоко и что он не будет поддерживать в будущем, однако у яблока были некоторые проблемы с моно в прошлом, и поскольку история имеет тенденцию повторяться, тогда это может быть возможность о том, что случилось снова

Сказав, что, всегда идут с родной SDKs и сред разработки приложений, это будет более гибким, и он будет обновляться в режиме реального времени, и производительность всегда будет лучше в родной

+5

Кроме того, что «ничего, кроме ObjC», когда они пытались убить Flash, у Apple никогда не было проблем с приложениями Mono. Даже когда они отказывались от «не ObjC-приложений» официально, они все еще одобряли приложения MonoTouch (включая мой) –

8

Я действительно использовал MonoTouch для каждого приложения, которое я когда-либо разрабатывал. Производительность никогда не была проблемой, и я не могу себе представить, насколько плохим для меня было бы использование Objective-C. У меня было 2 лучших 10 приложения в магазине приложений в США: «Нарисуйте Stickman» и «Draw A Stickman: Episode 2» (не беспокойтесь, мы работаем над большим количеством).

Если вы знаете C# и .Net, то ваши успехи в производительности будут массовыми по сравнению с тем, что будет пытаться изучить Objective-C. Я был разработчиком C# .Net (только для Windows) до разработки iOS, и переход на MonoTouch велик.

Если вам нравится Linq, разбор XML в менее чем 100 строках, сборка мусора, дженерики, простая многопоточность и без лишних квадратных скобок, MonoTouch для вас.

11

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

Это правда, что никто не может предсказать, что будет делать яблоко, но есть очень небольшая вероятность того, что компания Apple будет запретить сторонним ToolKits & API, как они делали это летом 2010 года Это был лишь короткий период времени, и они полностью отменили это решение. В настоящее время их основное внимание уделяется упрощению разработки приложений, что означает, что поле открыто для альтернативных методов разработки. Я думаю, что MonoTouch безопасен.

Что касается скорости, C# обычно производит очень быстрые исполняемые файлы. Они могут быть не довольно так же быстро, как Objective-C, но я сомневаюсь, что вы заметили разницу. Я помню, что видел сайт где-то, что показывало, что C# превосходит C/C++ в некоторых тестах, но это было в среде .NET, а не в Mono ... и, к сожалению, я больше не могу найти ссылку. Я буду продолжать смотреть. Но нижняя линия на скорости - это то, что скорости C# очень хорошие. Это не похоже на BASIC против C. Больше как Java/JIT против C.

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

Я являюсь очевидным поклонником MonoTouch, но я должен сказать одно: я думаю, что компаниям сложно подумать, что, поскольку они свободно владеют C# /. NET, они легко смогут развивать и/или поддерживать приложения iOS с помощью MonoTouch. Это просто неправда, потому что MonoTouch - это в основном C# -слой поверх API CocoaTouch, а это значит, что вам нужно научиться Apple делать что-то. У вас есть делегаты приложений и контроллеры просмотра и все материалы UIKit. Там есть реальная кривая обучения. Но если вы свободно владеете C#, MonoTouch будет огромной помощью.

UPDATE:
Я нашел статью на C# скорость: Head-to-head benchmark: C++ vs .NET

+1

MonoTouch использует компиляцию заранее, поэтому сравнение Java (которое обычно применимо) в этом случае не выполняется. Он запускает собственную сборку ARM, из генератора монокодов, связан и построен с помощью gcc или llvm (так же, как и все приложения xcode/objc). –

+0

Правда, но я сравнивал общую скорость выполнения, а не базовую архитектуру. Спасибо, хотя, хорошее разъяснение. (TBH, мое сравнение Java тоже может быть ошибочным: C#, вероятно, быстрее. Но в любом случае он находится в том же порядке.) –

3

У нас есть бизнес-приложение, которое использует MS SQL в качестве хранилища данных и имеет WinForms и веб-интерфейс. Он интегрируется с нашими приложениями Windows Mobile 6.5 и планшетами с веб-службами. Все C#.

Мы полностью посвятили себя MonoTouch после некоторых экспериментов в Objective-C и HTML-5 (у нас были рабочие прототипы): мы снова используем нашу бизнес-логику, и нам удобно разрабатывать новый код в C#.

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

Наша основная проблема - найти программиста на C#, который удобен с iPhone и iPad UI.

MonoTouch стабилен, и мы не сталкивались с ограничениями (мы привязываемся к тому же API iOS, с которым привязывается Objective-C). Во время нашей кривой обучения у нас был вопрос, наткнулся на ошибки и были некоторые недоразумения, но поддержка от Xamarin превосходна.

Производительность была без проблем - наше приложение мгновенно, хотя оно много делает за кулисами.

6

Я использую оба Objective-C и C# (MonoTouch & Droid), и мне очень нравятся оба. Когда я кодирую в C#, есть много таких функций, как Linq, которые мне бы хотелось в Obj-C, &, когда я кодирую в Obj-C, есть много вещей, которые мне бы хотелось иметь в C#, но я быстро адаптируюсь ко всему, что кодирую. Re, я не обнаружил никакой разницы вообще, даже для довольно интенсивного графического материала, поэтому я бы не стал использовать это как повод не использовать C#.

Я думаю, что в конечном итоге это зависит от того, что вам удобно кодировать, хотя, конечно, с хорошо продуманным кросс-платформенным проектом, у вас может быть полностью кросс-платформенный код ядра, если вы используете Mono, и у вас будет только для того, чтобы делать материал UI определенно на платформе - когда дело доходит до этого, очевидно, вам нужно знать родные вещи, чтобы ваши пользовательские интерфейсы работали таким образом, который подходит для платформы и знакомы ее пользователям.

+0

Мне интересны функции Objective-C, которые вы пропускаете на C#. Поразмыслить? –

Смежные вопросы