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