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

Почему использование MonoTouch для разработки iPhone не рекомендуется?

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

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

4b9b3361

Ответ 1

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

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

Если вы используете Java + ObjC + С# (для WP7/Win8 metro и т.д.), то это не опция AT ALL

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

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

Они сказали, что Цель C предлагает больше возможностей и возможностей,

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

быстрее

Мне бы хотелось увидеть контрольный показатель. Да, технически, в некоторых случаях это может быть быстрее, но в целом использование MonoTouch одинаково или быстрее.

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

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

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

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

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

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

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

Есть причины предпочесть ObjC, который был бы следующим:

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

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

Ответ 2

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

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

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

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

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

UPDATE:
Я нашел статью о скорости С#: Контрольный показатель от главы к голове: С++ vs .NET

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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

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

Ответ 6

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

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