Mono, monotouch c # vs

Так склалося, що моя діяльність в якості розробника програмного забезпечення пов'язана як з 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 не влаштував, потрібно було додаток, написане на рідному 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 для реалізації, так як на девайсе ефект моторошно гальмував.

Схожі статті