Как и любой вопрос, который-инструмент-или-платформа-или-язык-или-рамка-или-независимо, это должно действительно свести к вам хотите.
Забудьте обо всех советах 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.
Действительно закрытие сейчас ... Надеюсь, это поможет.
Что так страшно в изучении новой технологии? Это новая платформа. – jbrennan
Изучение нового языка только для одной платформы не имеет смысла. В следующем году Nokia или Linux-телефон станет следующей большой вещью, и вы должны снова изучить новый язык. Iphone поддерживает c и C++ и теперь через эти технологии C#. Я бы пошел с тем, что знал. (хотя смотреть на новые языки никогда не бывает плохой ... но начать работать в нем только для этой платформы - это еще одна вещь) – Toad
Если вы предпочитаете потратить месяцы на трату времени на инструменты второй ставки, чем потратить дни на изучение нового языка программирования ; то вам должно быть стыдно называть себя программистом. – PeyloW