Я видел этот вопрос (и варианты по нему) много в последнее время. Что поражает меня, так это то, как часто люди отвечают, но как мало людей отвечают .
У меня есть свои предпочтения (мне нравятся оба стека), но именно здесь большинство «ответов» начинают ошибаться. Это не должно быть о том, что я хочу (или что хочет кто-то еще).
Вот как я могу определить ценность MonoTouch - очевидно, я не могу быть объективным, но я думаю, что это довольно без фанатизма:
Это для развлечения или бизнеса? Если вы хотите получить консультацию в этой области, вы можете вернуть свои $ 399 очень быстро.
Вы хотите изучать платформу наизнанку, или вы просто хотите написать приложения для нее?
Вам нравится .Net настолько, что использование другого стека разработчиков доставит вам удовольствие? Опять же, мне нравятся оба стека (Apple и Mono), но для меня MonoTouch делает этот опыт намного веселее. Я не перестал использовать инструменты Apple, но это в основном потому, что мне действительно нравятся оба стека . Я люблю iPhone, и я люблю .Net. В этом случае для меня MonoTouch был легким делом.
Вам комфортно работать с C? Я не имею в виду Objective-C, но C - это важно, потому что Objective-C - это C. Это хорошая, причудливая, дружелюбная ОО-версия, но если указатели дают вам хиби-джиби, MonoTouch - ваш друг. И не слушайте скептиков, которые думают, что вы изобретатель, если случится так, что вам не нравятся указатели (или C и т. Д.). Раньше я ходил с копией IBM ROM BIOS Pocket Reference, и когда я писал ассемблер и заставлял свой компьютер переходить в смешные режимы видео и писать свои собственные биты рендеринга шрифтов для них и (по общему мнению, дрянных) оконных систем, я этого не делал. Я думаю, что разработчики QuickBasic были хитрыми. Я былQuickBasic Dev (в дополнение к остальным). Никогда не поддавайся ботанику. Если вам не нравится C, и вам не нравятся указатели, и если вы хотите держаться как можно дальше от ручного управления памятью (и, честно говоря, это совсем не плохо в ObjC), тогда. .. MonoTouch. И не берись за это.
Хотите ли вы ориентироваться на пользователей или предприятия? Для меня это не имеет большого значения, но на Edge все еще есть люди, и дело в том, что вы можете создать гораздо меньший пакет загрузки, если используете стек Apple. Я играл с MonoTouch, и у меня есть приличное маленькое приложение, которое после сжатия сокращается до 2,7 МБ (когда вы отправляете свое приложение для распространения, вы архивируете его - когда приложения загружаются из магазина, они ' Застегните молнию - так что, выясняя, будет ли ваше приложение загружено в лимит OTA в 10 МБ, сначала застегните молнию на присоске - вы будете приятно удивлены MonoTouch). Но, если не считать счастья МТ, половина мег против почти трех (например) - это то, что может быть важно для вас, если вы ориентируетесь на конечных пользователей. Если вы думаете о работе предприятия, несколько МБ не будут иметь значения вообще. И, просто чтобы быть ясным - я собираюсь в ближайшее время представить приложение на базе MT в магазин, и у меня нет никаких проблем с размером. Меня совсем не беспокоит. Но если это то, что касаетсяВы , тогда стек Apple выигрывает этот.
Делаете какие-нибудь работы с XML? MonoTouch. Период.
Струнные манипуляции? Дата манипуляции? Миллион других мелочей, к которым мы привыкли, в .Net-инфраструктурах «все и кухня»? MonoTouch.
Веб-сервисы? MonoTouch.
Синтаксически они оба имеют свои преимущества. Objective-C имеет тенденцию быть более многословным, где вы должны написать это . Вы обнаружите, что пишете код на C #, вам не нужно писать на ObjC, но это происходит в обоих направлениях. Эта конкретная тема может заполнить книгу. Я предпочитаю синтаксис C #, но после преодоления моей первоначальной реакции "потусторонний мир" на Objective-C я научился получать от нее удовольствие. Я высмеивать него немного в переговорах (это является странным для разработчиков , которые вы использовать для C # / Java / и др.), Но правда в том , что у меня есть Objective-C форму пятна в моем сердце , что делает меня счастливым.
Планируете ли вы использовать Interface Builder? Потому что даже в этой ранней версии я выполняю гораздо меньше работы по созданию своих пользовательских интерфейсов с помощью IB, а затем использую их в коде. Такое ощущение, что целые шаги отсутствуют в способе выполнения Objective-C / IB, и я почти уверен, что это происходит потому, что целые шаги отсутствуют в способе выполнения Objective-C / IB. До сих пор, и я не думаю, что я достаточно протестировал, но пока MonoTouch - победитель за то, сколько меньше работы вам нужно сделать.
Как вы думаете, это интересно изучать новые языки и платформы? Если это так, у iPhone есть что предложить, и стек Apple, скорее всего, выведет вас из вашей комфортной зоны - что для некоторых разработчиков забавно (Привет - я один из тех разработчиков - я шучу об этом и даю Apple, это тяжелое время, но мне было очень весело изучать разработку iPhone с помощью инструментов Apple).
Есть так много вещей, чтобы рассмотреть. Ценность такая абстрактная. Если мы говорим о стоимости и о том, стоит ли она того, ответ сводится к моему первому пункту: если это для бизнеса, и если вы можете получить работу, вы вернете свои деньги обратно.
Так что ... это настолько объективно, насколько я могу быть. Это краткий список того, что вы можете задать себе, но это отправная точка.
Лично (давайте на минутку отбросим объективность), я люблю и использую оба. И я рад, что сначала изучил стек Apple. Мне было легче начать работать с MonoTouch, когда я уже знал свой путь в мире Apple. Как уже говорили другие, вы по-прежнему будете работать с CocoaTouch - он просто будет работать в среде .Net.
Но это еще не все. Люди, которые не использовали MonoTouch, как правило, останавливаются на достигнутом - «Это фантик бла-бла-бла» - это не MonoTouch.
MonoTouch дает вам доступ к тому, что может предложить CocoaTouch, а также дает доступ к тому, что может предложить (подмножество) .Net, IDE, с которой некоторые люди чувствуют себя более комфортно (я один из них), лучшая интеграция с Interface Builder и хотя вы не можете полностью забыть об управлении памятью, вы получаете хорошую степень свободы.
Если вы не уверены, возьмите стопку Apple (это бесплатно) и захватите стека MonoTouch eval (это бесплатно). Пока вы не присоединитесь к программе разработчиков Apple, оба будут работать только на симуляторе, но этого достаточно, чтобы помочь вам выяснить, предпочитаете ли вы одно другому, и возможно, стоит ли MonoTouch для вас $ 399.
И не слушайте фанатиков - они, как правило, те, кто не использовал технологию, против которой они ругаются :)