Как стать автором
Обновить

Mono, MonoTouch + C# vs. iPhone SDK + Objective-C

Время на прочтение2 мин
Количество просмотров3.6K
Так сложилось, что моя деятельность в качестве разработчика программного обеспечения связана как с iPhone, так и с .NET технологиями. Если говорить, что первично, то это, конечно, .NET и C#, поэтому информация будет подана с точки зрения дотнетчика.

В статье хочу рассказать о небольшем опыте разработки одного проекта одновременно на mono с использованием MonoTouch и на родном Objective-C.

Описание проекта


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

Вариант №1: Mono + MonoTouch


Думаю, не нужно говорить, что такое Mono.

MonoTouch позволяет писать приложения на C# и компилировать их для iPhone, а также использовать .NET библиотеки.

Полный набор программного обеспечения:
* Apple Mac OS X
* утановленный Mono для Mac OS X
* MonoDevelop
* MonoTouch

Во превых, исходный код на Silverlight без проблем скомпилировался под макосью и запустился в Safari (Silverlight на макоси — это уже Moonlight). Это был хороший знак.

Был создан MonoTouch проект и, используя кроссплатформенную технологию copy-paste, было написано 80% приложения. Адаптация остального кода заняла около двух дней, после чего была продемонстрирована первая версия приложения. Хочу заметить, что приложение работало быстро (оно состояло, в основном, из математических вычислений, которые использовались для транформаций изображений).

К сожалению, заказчика вариант на MonoTouch не устроил, нужно было приложение, написанное на родном Objective-C.

Вариант №2: iPhone SDK + Objective-C


Код с C# на Objective-C был переписан в течении дня и… после этого приложение начало жутко тормозить. Еще два дня было потрачено на борьбу с memory leaks и написании release для некоторых локальных переменных, после чего приложения стали работать идентично.

Тут, нужно остановиться, и сделать лирическое отступление. Я прекрасно понимаю, что хороший разработчик должен понимать, как работает выделение, освободжение памяти, как искать memory leaks и как сделать так, чтобы их не было. Так вот, почему я люблю .NET и C#, что мне не нужно отвлекаться на то, как что-то реализовать, а можно сконцентрироваться на то, что мне нужно реализовать.

Выводы


Таким образом, я сделал следующие выводы в этой ситуации:
* никаких привыканий и дополнительных мануалов не нужно (как в случае с Xcode) для того, чтобы начать работать с вышеперечисленными инструментами;
* если вы дотнетчик и у вас есть возможность писать на C# и MonoTouch — лучше так и делайте, что избавит вас от многих проблем;
* mono — не такая уж конч*ная платформа, как кому-то хочется думать;
* несмотря на то, что MonoTouch — молодой продукт, в сети уже есть много материалов, связанных с особенностями использования этого продукта;
* фактически, вы используете iPhone SDK, но используете синтаксис C# и возможности .NET (например string1 + string2 вместо [string1 stringByAppendingString:string2]);
* удобство работы в MonoDevelop намного выше чем в Xcode.

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

P.S. В итоге был выбран OpenGL ES для реализации, так как на девайсе эффект жутко тормозил.
Теги:
Хабы:
Всего голосов 55: ↑43 и ↓12+31
Комментарии62

Публикации

Истории

Работа

Swift разработчик
31 вакансия
iOS разработчик
24 вакансии

Ближайшие события