Как написать программу для iPhone

Часть шестая, альтернативная и заключительная

Мы с вами уже достаточно подробно обсудили создание приложений для популярной платформы iOS, используемой в смартфонах производства Apple, с помощью средств, предлагаемых самой "яблочной" компанией. Сейчас же я предлагаю посмотреть внимательнее на альтернативу стандартному решению - пакет MonoTouch.


Лирика о плюсах

О MonoTouch я рассказывал уже вкратце в самом начале нашего разговора о создании приложений под iPhone, и, надеюсь, вы еще помните, что этот программный продукт дает возможность создавать приложения под iOS не на Objective-C, который, несмотря на все свои интересные возможности, остаётся для большинства разработчиков достаточно экзотичным языком, а на гораздо более широко распространенном стараниями корпорации Microsoft языке C#. Этим языком владеет гораздо большее количество программистов, и потому компании, которая решит перейти на разработку ПО под iPhone, не придется искать специалистов по Objective-C или переучивать собственных программистов - достаточно купить MonoTouch и посадить разработчиков за Mac'и.

Для того, кто хочет писать приложения в одиночку и ночами тайно мечтает о том, как пополнит список тех, кто сумел заработать на приложениях для iPhone действительно большие деньги, C# тоже несет в себе массу преимуществ. Дело в том, что в этом языке нет многих вещей, которые в Objective-C являются рудиментами, необходимыми для обеспечения обратной совместимости с C и которые несколько осложняют программирование. Взять, например, ту же самую работу с памятью. В C# работа с памятью организована очень простым и прозрачным для разработчика способом: фактически, специально работать с памятью в этом языке не надо, что избавляет программиста от такой головной боли, как утечки памяти, борьба с которыми занимает достаточно много сил и времени, да и вообще когда можно не концентрироваться на разных технических мелочах, а раздумывать исключительно над реализацией интерфейса, "фич" и прочих подобных вещей. Ну и, конечно же, не стоит забывать о кросс-платформенности. Фактически, вы можете написать один и тот же код для iPhone и Windows Mobile-устройств, что весьма полезно, с точки зрения рынков этих двух мобильных платформ.


Ремарка об iOS 4

Впрочем, это все лирика. Понятное дело, что MonoTouch дает программисту много интересных возможностей, потому что в противном случае этот инструмент не смог бы конкурировать с "официальным" SDK от самой Apple. Но, видимо, стремление Apple привязать разработчиков к своим инструментам все-таки сильнее соображений удобства. Потому что некоторое время назад появилось сообщение о том, что "яблочная" компания запретит распространение через свои фирменные сервисы приложений, написанных с помощью инструментов, отличных от тех средств разработки, которые предлагает сама Apple. Что и говорить, сообщество разработчиков приложений под iOS не на шутку заволновалось, и в блогах стали одна за другой появляться статьи в стиле "Apple, одумайтесь!" или "MonoTouch отправляют на свалку". В апреле этого года на сайте проекта Mono появилась достаточно оптимистичная заметка с ответами на все вопросы разработчиков, касающихся работы с 4-й версией мобильной платформы от Apple (www.mono-project.com/newstouch/archive/2010/Apr-09.html). Ну и, в общем-то, как показало время, действительно ничего страшного для MonoTouch с выходом iOS 4 и новой лицензии не произошло. На официальном сайте MonoTouch, расположенном по адресу monotouch.net, можно увидеть новости о выходе обновленных версий этого программного продукта с поддержкой iOS 4. В общем-то, и не в интересах Apple было убивать сателлита своей платформы, позволяющего создавать разработчикам еще больше приложений, часть денег от продажи которых идет в карман Apple.


Как работает MonoTouch?

Apple достаточно серьезно озабочена безопасностью своих устройств, в связи с чем на iOS запрещено выполнение кода под управлением каких-либо виртуальных машин. В частности, именно по этой причине до сих пор под iPhone нет версии виртуальной машины Java. В связи с этим возникает закономерный вопрос: как же разработчикам MonoTouch удалось обойти это ограничение и позволить программистам создавать приложения для iPhone с помощью C#? Ведь .Net-приложения исполняются именно под виртуальной машиной. На самом деле ответ достаточно прост: компилятор, входящий в состав пакета MonoTouch, генерирует родной платформенный код для iPhone, который может выполняться на iOS без какой бы то ни было виртуальной машины. Что интересно, при всем при этом функциональность разных .NET'овских возможностей практически не страдает: как говорят разработчики проекта, едва ли ни единственной потерянной возможностью будет отсутствие поддержки использования Reflection.Emit.


Собственно, разработка

Как я уже говорил в первой статье, посвященной разработке программного обеспечения под iOS, MonoTouch избавляет вас только от необходимости изучать Objective-C, но никак не от необходимости работать под Mac OS X и изучать особенности самой платформы iOS. Фактически, вы будете делать все то же самое, что и в случае с официальным SDK, только на C# и в другой среде разработки.

Некоторое время назад по разработке приложений для iPhone на MonoDevelop информации было не просто мало, а катастрофически мало. В общем-то, с такой проблемой сталкивается каждый, кто хочет работать с молодой, но перспективной технологией. Но, в общем-то, сейчас уже вполне можно говорить о том, что эти времена ушли в безвозвратное прошлое. Теперь информации по разработке на MonoTouch более чем достаточно, в том числе и на русском языке. Если будете серьезно заниматься разработкой приложений под iPhone и использованием обсуждаемого нами сейчас инструментария, то вам наверняка пригодятся такие ресурсы, как monotouch.info и monotouchexamples.com. Оба они англоязычные, но весьма и весьма информативные. Для тех, кто хочет быстрее начать работать с MonoTouch и не тратить время на самостоятельное "тыкание" в инструментах, пригодятся обучающие ролики на YouTube - просто вбейте в поиск MonoTouch. Что касается книг, то пока что их не очень много, и на русском языке совсем нет. На английском есть, например, "Professional iPhone Programming with MonoTouch and .NET/C#" - в принципе, покупка этого пособия через Интернет сложности не представляет. Думаю, что на волне "айфономании" и интереса к MonoTouch как к платформе разработки софта под iPhone скоро должны появиться и русские переводы подобной литературы.

Тем не менее, вернемся все-таки к разговору о работе, а не об учебе. MonoTouch ориентирован на использование в качестве среды разработки MonoDevelop - кросс-платформенной IDE, разрабатываемой в рамках проекта Mono. Этот инструмент бесплатен, но его нужно будет скачивать отдельно. Некоторые разработчики высказывали ряд замечаний по поводу удобства работы в этой среде, а также стабильности её работы - но, собственно говоря, свободное ПО есть свободное ПО, и здесь если кому-то что-то не нравится, то можно взять и доработать. Зато интерфейс для приложения нужно будет рисовать в редакторе производства самой Apple - этот редактор называется, как ни странно, Interface Builder. В общем-то, Interface Builder достаточно прозрачно интегрирован в MonoDevelop, и особых неудобств тот факт, что фактически разработку нужно будет вести с помощью двух независимых инструментов, не вызовет.


Немного об отладке

Напоследок пару слов хочется сказать и об отладке приложений, разрабатываемых с помощью MonoTouch. К счастью, сейчас уже прошли те времена, когда разработчики, применявшие эту технологию, использовали старую и проверенную временем технику вставки в код Console.WriteLine для вывода интересующей их информации во время отладочных запусков приложения. Отладчик на первых порах отсутствовал вовсе не из-за консервативности компании Novell, разрабатывающей MonoTouch, а просто из-за того, что Apple достаточно ревностно блюдет тайны своей платформы, и достаточно много времени у создателей продукта, о котором мы с вами сейчас ведем разговор, ушло на изучение протокола коммуникаций приложений с фирменными Apple'овскими отладчиками. Сегодня MonoTouch предлагает разработчикам Soft-Debugger, который встроен в MonoDevelop и использует вызовы интерфейса среды исполнения Mono. Отладка приложений, написанных под iPhone, практически не отличается от отладки обычных .NET-приложений, и, что самое приятное, можно отлаживать программу, запущенную на самом устройстве, с помощью подключения по Wi-Fi. Правда, если вы используете в своем коде какие-то библиотеки, написанные на C, C++, Objective C, то их отлаживать у вас с помощью упомянутого выше Soft-Debugger'а уже не получится. Для этого можно воспользоваться средой XCode и отладчиком GDB.


Напутствие

Что ж, на этом завершим наш разговор о создании приложений под iOS. Возможно, мы еще вернемся к нему, потому что, как ни крути, iPhone сегодня - мобильная платформа номер один, и сегодня под нее пишется очень много приложений. Хочу попросить прощения, если что-то осветил не так, как вам хотелось бы. Надеюсь, тем не менее, что серия была вам полезна и вызвала хотя бы какое-то желание изучить программирование под iPhone. Ну и, конечно, хочу пожелать удачи и настойчивости тем, кто решил освоить новую платформу, - они вам пригодятся.

Вадим СТАНКЕВИЧ,
[email protected]

Версия для печатиВерсия для печати

Номер: 

36 за 2010 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя TC BelHard
возможно читателей статьи заинтересует курс по разработке приложений для iPhone http://www.tc.belhard.com/courselist/49.php?kv1

Пришедшим по данной ссылке скидка 5% при оплате курса по паролю "kv1969"

Удачи Вам и Вашим приложениями в AppStore!

Аватар пользователя Инкогнито
ну и ценник! побойтесь бога и налоговой!
Аватар пользователя Алексей
БелГад сам себе и Бог и Налоговая. )))
Аватар пользователя Инкогнито
почему реклама не в "барахолке"?
Аватар пользователя Инкогнито
Спасибо автору за серию статей - многое прояснило
Аватар пользователя Инкогнито
херня пустая....