tutorial started mac instalar getting compile c# objective-c ios xamarin.ios

c# - started - MonoTouch v. Objective-C para nuevos desarrolladores de iPhone



xamarin ios tutorial (4)

Estoy trabajando con una pequeña startup con el objetivo de crear una aplicación para iPhone. Los programadores de nuestro equipo conocen C y Java, pero no tenemos experiencia en ObjC / C # / iPhone, aprenderemos algo sin importar qué. Todas las preguntas que he visto sobre este tema han sido desde la perspectiva de un programador de C # entrar en iOS, así que no tengo ninguna información sobre los méritos relativos de aprender una u otra.

Entonces, lo que quiero saber es los méritos relativos de C # y Objective-C para los nuevos programadores, con respecto a estas cosas:

  • Actuación
  • Facilidad de uso
  • Facilidad de aprendizaje
  • Confiabilidad (es decir, ¿una nueva versión de iOS romperá una aplicación MonoTouch?)

Además, ¿escribir en MonoTouch tendría algún beneficio para el desarrollo multiplataforma con Android?


Objective C es un superconjunto estricto de C, por lo que si comprende las características de rendimiento del código C compilado en ARM, puede usar ese subconjunto C con el que está familiarizado, a excepción de la IU de iOS.

Parece que existen informes de que los programadores experimentados de C comienzan a ponerse al día escribiendo aplicaciones de iOS en el Objetivo C del orden de 2 semanas. Pero, por supuesto, aprender marcos extensos y API en un proceso de aprendizaje continuo, sea cual sea el idioma.


Si el objetivo de su inicio es crear una aplicación para iPhone, entonces obviamente debe aprender el idioma con el que se crean las aplicaciones para iOS, Objective-C. Su equipo ya tiene experiencia con C, por lo que debería ser muy fácil comenzar. Los libros de Big Nerd Ranch te pondrán en marcha en una semana o dos (no estoy asociado con Big Nerd Ranch, creo que son increíbles).

No entiendo por qué mencionas MonoTouch, teniendo en cuenta que tu equipo no tiene experiencia en C # / .NET. Hay montones de otros frameworks como MonoTouch, incluyendo Titanium SDK (JavaScript), RubyMotion (Ruby), y así sucesivamente. Todos estos son geniales, pero como veo, son principalmente para aquellos con experiencia en sus respectivos idiomas. Le permiten escribir aplicaciones de iOS usando un idioma con el que está más familiarizado, pero tienen los siguientes inconvenientes:

  1. El rendimiento puede ser igual de bueno, pero generalmente un poco (a veces mucho) peor que una aplicación escrita en Objective-C.
  2. Los recursos para aprender no son tan abundantes como los del iOS SDK / Objective-C. Hay muchas personas que quieren hacer aplicaciones para iOS, y esas personas usan estos marcos, y se diluyen entre ellos. Solo una pequeña fracción de los recursos disponibles para el desarrollo de iOS se dedicará a cualquier marco.
  3. Estos marcos están basados ​​en el SDK / Objective-C de iOS, por lo que el desarrollo siempre está un paso atrás. Si Apple implementa API radicalmente nuevas en la próxima versión del SDK de iOS, tendrá que esperar a que estos marcos se adapten (las aplicaciones escritas en Objective-C también podrían romperse, pero será más fácil tratarlas basándose en punto n. ° 2).
  4. La mayoría de estos marcos requieren familiaridad con el SDK de iOS. Todavía necesitará saber que una aplicación llama a la aplicación - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions método - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions en el inicio, pero además tendrá que recordar cómo traducir eso en el método apropiado para MonoTouch: public override bool FinishedLaunching (UIApplication app, NSDictionary options) . El iOS SDK es enorme, y la mayoría de los desarrolladores de iOS confían en la documentación de Apple para obtener información. Por lo tanto, mirará los documentos API escritos para Objective-C y traducirá los métodos al marco de su elección.
  5. El ecosistema Objective-C está en constante evolución, con nuevos proyectos geniales como CocoaPods , bwoken , etc. Estos se desarrollan principalmente con Objective-C y Xcode en mente. Configurarlos para que funcionen con su marco de trabajo casi siempre le ocasionará tiempo y trabajo extra.

Los puntos anteriores generalmente me han impedido profundizar demasiado en cualquiera de estos otros marcos. Todos son geniales, pero su principal mérito en la adopción parece ser facilitar el desarrollo para personas con habilidades profundas fuera de Objective-C, o permitir el desarrollo multiplataforma para equipos pequeños que carecen de los recursos para invertir en Android e iOS (y Programadores de Windows Phone). Es de esperar que los beneficios superen los costos anteriores para los adoptantes.

Además, ¿escribir en MonoTouch tendría algún beneficio para el desarrollo multiplataforma con Android?

Supongo que sí. De hecho, la página de inicio de MonoTouch promociona eso como una ventaja principal de usar el marco. No estoy tan seguro acerca de las clases de vista / controlador, ya que parece que estarían atadas a UIKit , pero la lógica encapsulada en sus modelos debería ser bastante fácil de transportar.

Para resumir, creo que usted y su equipo deberían seguir con Objective-C para el desarrollo de iOS.


Si solo estás construyendo una aplicación para iPhone , entonces elige el objetivo C. Pero si quieres una aplicación móvil , que puede incluir Android, Windows Phone, Windows RT, Blackberry, webos u otras opciones, es posible que desees tomar una. una mirada cercana a algunas de las plataformas alternativas, de las cuales MonoTouch es una opción destacada.


Para el rendimiento, la respuesta es Objective-C, todo el camino.

Dicho esto, eche un vistazo a hacer esto con HTML5. Si se adhiere a las transformaciones aceleradas, el rendimiento de HTML5 para una interfaz de aplicación es sorprendentemente bueno. También es bastante fácil mover su aplicación HTML5 a Android.

La respuesta simple es Objective-C. No es muy difícil de aprender. Si eres sólido en C y sólido en OOP, estarás bien.