2009-09-28 5 views
27

Являясь разработчиком .Net, я всегда мечтал о возможности разработки с помощью моих существующих приложений (C#) для Iphone.Monotouch или Titanium для быстрой разработки приложений на IPhone?

Обе программы требуют установки Mac и Iphone Sdk.

Appcelerator Titanium был первым приложением, которое я пробовал, и оно основано на экспонировании некоторого родственного api для Iphone для javascript, чтобы их можно было вызвать с использованием этого языка.

Monotouch начинается с 399 долларов США за то, что он не может быть размещен на Iphone, а не на симуляторе Iphone, в то время как титан является бесплатным.

MonoTouch (Monodevelop) имеет Ide, что в настоящее время отсутствует в титане (но вы можете использовать любой редактор, например Textmate, Aptana ...)

Я думаю, что обе программы генерируют в конце родной прекомпилированный приложение (также если я не уверен относительно размера финального приложения на Iphone, так как я думаю, что вызовы инфраструктуры .Net предварительно усложняются во время компиляции в Monotouch).

Я также не уверен в полном охвате всех функций Iphone и функций.

Titanium обладает также преимуществом для разработки приложений для Android, но, как разработчик C#, я по-прежнему считаю, что Monotouch больше похож на Visual Studio.

Какой из них вы бы выбрали и какие у вас были впечатления от Monotouch и Titanium?

+3

Что так страшно в изучении новой технологии? Это новая платформа. – jbrennan

+2

Изучение нового языка только для одной платформы не имеет смысла. В следующем году Nokia или Linux-телефон станет следующей большой вещью, и вы должны снова изучить новый язык. Iphone поддерживает c и C++ и теперь через эти технологии C#. Я бы пошел с тем, что знал. (хотя смотреть на новые языки никогда не бывает плохой ... но начать работать в нем только для этой платформы - это еще одна вещь) – Toad

+3

Если вы предпочитаете потратить месяцы на трату времени на инструменты второй ставки, чем потратить дни на изучение нового языка программирования ; то вам должно быть стыдно называть себя программистом. – PeyloW

ответ

97

Как и любой вопрос, который-инструмент-или-платформа-или-язык-или-рамка-или-независимо, это должно действительно свести к вам хотите.

Забудьте обо всех советах If-you-want-to-develop-for-this-platform-then-you-have-to-pay-your-dues. Если вы заинтересованы в изучении Objective-C, Xcode и связанных с ним битов Apple, тогда goferit. Я сделал. Это было весело, но мой интерес был в разработке приложений для iPhone. Изучение нового языка, рамки и IDE было просто бонусом (мне нравится этот материал). Это было необходимо, когда я начал.

Я работаю с MonoTouch, так как он был выпущен, и мне это нравится. I предпочитает C# Objective-C, и мне нравится иметь доступ к подмножеству .Net (Mono), который предоставляет MonoTouch.Есть некоторые вещи, которые просто проще сделать с .Net чем Cocoa (манипуляция строками, манипуляция датами, что-нибудь XML и т. Д.).

Мне также не нравится иметь дело с подсчетом ссылок больше. Я был испорчен годами, когда мне не приходилось отслеживать ресурсы на этом уровне. Я не против, чтобы убираться после себя, но я не хочу, чтобы вручную делать то, что каждая другая современная платформа для разработчиков, которую я использовал, делает для меня автоматически. Кроме того, даже для опытных разработчиков Objective-C подсчет ссылок не является проблемой. Прокручивайте консольный вывод OS X некоторое время, чтобы узнать, сколько приложений вышло из строя из-за проблем с управлением памятью (я знаю - это может случиться с любым приложением, но гораздо легче сделать ошибки, которые приводят к этой ситуации, когда вы получаете перегруженных разработчиков чьи масштабы внимания были уничтожены на двенадцать часов, если это и если это, а еще это, а другое - и бла-бла-бла).

Я все еще использую Objective-C/Xcode - я действительно научился как инструменты Apple. Я честно чувствую, что они неловкие и немного тайные, но все равно весело.

Но ... тогда я так:

public string SomeString { get; set; } 

Чтобы сделать то же самое с Objective-C (на iPhone, во всяком случае) требует, чтобы вы объявить локальную переменную обратно имущество, написать объявление свойства, а затем используйте директиву «синтезировать», чтобы иметь свойство, сгенерированное для вас (в зависимости от того, какие атрибуты свойства вы указали, у вас может быть свойство, которое обертывает получатели и сеттеры, которые заботятся о подсчете ссылок для вас - в целом, этот является экономией времени, но путь C# является явным победителем здесь).

Это всего лишь один пример того, как MonoTouch может облегчить вашу жизнь, особенно если вы привыкли к .Net/Java/Python/другим языкам, которые не требуют, чтобы ваши пальцы загрязнялись памятью (кроме вы хотите).

Что касается iPhone-ness, то помимо использования части .Net для мира iPhone пространство имен MonoTouch отображается в CocoaTouch, поэтому, если вы смущены, скажем, MonoTouch UIViewController, вы можете просто прыгать к документам Apple в UIViewController. MonoTouch. Net-izes CocoaTouch, но это достаточно близко, что вы вряд ли ударились о стену (это также не попало бы, если бы вы использовали Xcode/Objective-C). Это пятно.

Титан отличается. Так как они пытаются (, попробовав), чтобы создать слой абстракции, который позволяет писать одно и то же приложение для нескольких платформ, вы будете иметь дело с обычными недостатками: абсолютно разные API, потеря гибкости (то же самое можно сказать из MonoTouch, но не удаленно в той же степени), и в основном нужно изучить совершенно новую платформу (чего вы пытаетесь избежать, обойдя Xcode/Objective-C/CocoaTouch, верно?).

Я также ненавижу JavaScript, поэтому я буду склоняться против Титана. Но даже если бы это было не так, даже если бы я мог использовать язык, который мне действительно нравится - API не щекочут мою фантазию. Или ничего.

Независимо от того, какие инструменты вы выберете, вы получите , чтобы узнать что-то о CocoaTouch. Является ли это Xcode/Objective-C, MonoTouch или Titanium, что-то собирается сломать или пойти на все лады на вас, и вам в конечном итоге придется обратиться к документации CocoaTouch.

Если бы я поговорил о развитии iPhone (который у меня есть, и что я буду делать снова), и если бы я обсуждал альтернативы инструментам разработчика Apple (что я буду), я все равно настоятельно рекомендую разработчиков по крайней мере, работать через несколько базовых приложений для iPhone, используя собственные инструменты. Это сделает вас лучшим разработчиком платформы. И вы можете использовать эту начальную фазу, чтобы определить, хотите ли вы использовать что-либо, кроме бесплатных битов, поставляемых Apple. Вы не можете. Я использую MonoTouch, потому что мне это нравится - не потому, что это необходимо.

Итак, суммируем несколько основных критериев:

  • предпочтения (язык/Каркасы)

  • устройств (вы заботитесь о не-iPhone платформ, или думаете, что вы могли бы когда-нибудь?)

  • Comfort (если вы любите и знаете, C# гораздо лучше, чем Objective-C, нет никаких причин, чтобы не идти с MonoTouch)

И не слушайте скептиков, если у них нет Тех, о котором они говорят. Например, я читал о Титане, но я не испытываю этого - я просто знаю, что я не хочу иметь с этим ничего общего в связи с моими предпочтениями. Это не делает его «плохим» - просто чего-то, чего я не хочу в своей жизни.

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

Игнорировать их.

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

  • Apple, скорее всего, остаются актуальными, так как они те, что делает этот мусор.

  • MonoTouch, скорее всего, останется в силе - моноспектакли Mono отлично справились с работой Microsoft, и я не вижу причин, по которым они не будут делать то же самое с Apple. Я взорван тем, что они делают. И, несмотря на то, что MonoTouch был выпущен, например, пять минут назад, у них уже есть обновление для iPhone 3.1. Они серьезно относятся к этому, и я думаю, что они волшебные. Они эльфы Киблера мира дев. Они сидят в своих секретных слоях и кричат ​​все, кому нравится (хорошо - не все), но никто больше даже не попытается это сделать.

  • Titanium либо станет неудобным унифицированным API для написания приложений для нескольких платформ, это полностью его собственная вещь, либо он будет становиться все более и более раздробленным, поскольку возможности разных платформ расходятся. Да, это куча типичного кресла, боязливого будущего ... Я должен был предварять этот пункт пули: «Это мое мнение, что ...» Если бы только был способ вернуться и изменить его.

Я закрою сейчас.

Пойдите с тем, что вам нравится. MonoTouch - «безопасная» альтернатива материалам Apple.Я боюсь, что Титан собирается спуститься по тому же самому, что и многие другие технологии, - это супер-высокоуровневая платформа-абстракция-слой-материал-не-действительно-рабочая дорога. Но если вы делаете что-то простое, нет никакого вреда в том, чтобы дать ему шанс, особенно учитывая, что он свободен в течение бета-периода.

Aright.

Действительно закрытие сейчас ... Надеюсь, это поможет.

+2

Рори, спасибо за это ясное и глубокое объяснение, которое действительно дало форму различным возможным выборам. – Ronnie

+7

Черт возьми, это очень полезный ответ. Спасибо, что поделились тем, что вы знаете. –

+1

Очень хороший ответ. Мне нравится MonoTouch, что очень полезно. – Telavian

4

Это интересные и интересные способы создания приложений для iPhone. Но для действительно быстрой разработки iPhone на основе вашей игры лучшим вариантом будет бесплатный iPhone SDK и Xcode.

Честно говоря, самые трудные вещи для изучения - это возможности самих фреймворков, а не синтаксис языка. Но это проблема, с которой вам приходится сталкиваться в любом случае, поскольку эти IDE/Языки по-прежнему требуют от вас некоторых из соглашений Cocoa (и Cocoa Touch).

Я не говорю об этом как о сновидении Cocoa/Objective-C, но если вы знаете C (который, как вы, C# dev), на самом деле нет никакого препятствия для входа.

Кроме того, у вас будет доступ к тоннам учебников и примера кода, которые просто не будут доступны для этих молодых переводчиков/IDE/языков.

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

+2

Использование MonoTouch для разработки iPhone, поскольку вы уже являетесь программистом .NET, равносильно свариванию деревянного книжного шкафа, потому что вы уже являетесь сварщиком. Иногда учить несколько плодовых трюков хорошо, особенно если вы хотите избежать огня. – PeyloW

+4

Использование MonoTouch для «сварки деревянного книжного шкафа» похоже на то, что вы уже знаете сварщика, но это волшебным образом забивает, закручивает и склеивает книжный шкаф вместе, не зная о деталях. Вы * можете * копать и выяснять свой новый волшебный сварщик, но вам это не нужно. Если ваша цель - построить или исправить книжный шкаф, и если все, что вы знаете, это сварка, тогда ... эй - иди за ним. Некоторые люди хотят узнать все о снаряжении - некоторые просто хотят строить вещи. В MonoTouch вы можете сделать то же (MT научил меня больше) об инструменте Apple - это потрясающе). Попробуйте, прежде чем вы его сбиваете :) –

+0

Чтобы быть ясным, я думаю, что каждый MonoTouch-разработчик может извлечь большую пользу из изучения стека Apple. Я просто не чувствую, что у них есть *. Я знаю, что работа над iPhone-разработчиком в течение года заставила меня намного легче разобраться с MonoTouch. Не притворяйся, что это не так. Но, говоря о «изучении нескольких трюков-плотников», не могли бы вы сказать, что обучение MonoTouch делает именно это? Бывают случаи, когда один стек имеет смысл над другим - * I *, как выбор. Но вернемся к началу: я * * рекомендую MT devs потратить несколько дней на стек Apple - это весело, полезно и не может повредить. –

2

Мне нравится идея предоставления средств для быстрого захвата iPhone-разработчика с техно-людьми, которые уже знают. I personnaly, как разработчик Java, использует iSPectrum (http://www.flexycore.com). Он также поставляется с IDE, отладчиком и т. Д., Что делает его очень удобным для разработки, потому что это приносит пользу всем возможностям плагина Eclipse Java. Будучи основанным на Java, это также позволяет легко повторно использовать уже существующий код из других java-приложений, что может быть очень удобно, если Java присутствует практически на всех платформах (рабочий стол &), кроме iPhone. Плюс это бесплатно для проектов с открытым исходным кодом.

Я предпочел бы рассмотреть такие решения, потому что мне не нравится идея вернуться к разработке в emacs :).

2

Я знаю, что это старая тема, но в интересах постоянного тока это выглядит как MonoTouch и другие кроссплатформенные рамки: going to be banned in SDK 4.0. Ваша единственная «безопасная» ставка для написания приложений iPhone - это использовать XCode и Objective-C, по крайней мере, пока.

0

Существует множество способов проникновения на устройство. Apple заявила в лицензии SDK, что единственным утвержденным способом доступа к устройству является C, C++, ObjectiveC и Javascript.

В настоящее время приложения, созданные на MonoTouch и Appcelerator Titanium, принимаются в App Store. Благодаря изменению лицензии, существует много страха, неопределенности и сомнений по этому вопросу. Apple испугала всех, кто не делает ObjectiveC.

Я бы предположил, что вы делаете то, что имеет для вас смысл как разработчик. Если вы знаете C# и .NET, вы должны пойти с MonoTouch. Если вы знаете ObjectiveC или платформу Mac, ObjectiveC - это, вероятно, путь. Если вы знаете X, и это на iPhone, ну, X - это то, где я бы предложил сначала посмотреть.

+0

The down voters should по крайней мере, обеспечить обратную связь с пользователем. –

1

Если вы программист на C#, почему вы не должны инвестировать несколько раз, чтобы изучить Objective C. Честно говоря, это не займет много времени у вас. Но вам приятно работать на новой платформе с новым языком. Изучение новых вещей все время завораживает меня.

3

Я создал проект с открытым исходным кодом http://propertycross.com, который помогает разработчикам выбрать межплатформенную платформу для мобильных устройств, показывая одно и то же приложение, реализованное с Sencha, Titanium, Xamarin и другими. Этот проект позволяет легко сравнивать широкий спектр рамок с точки зрения опыта конечного пользователя, кода, IDE, опыта разработчиков и т. Д. ...