273 votes

Comment choisir entre MonoTouch et Objective-C?

Après s'être assis à travers une séance d'aujourd'hui sur Mono à un local .Net de l'événement, l'utilisation de MonoTouch a été "touché" comme une alternative pour le développement sur iPhone. Être très à l'aise en C# et .Net, il semble comme une bonne solution, en dépit de certains de la bizarrerie de la Mono pile. Cependant, depuis MonoTouch coûte 400$, je suis un peu déchiré sur si c'est la voie à suivre pour le développement sur iPhone.

Quelqu'un a une expérience de développement avec MonoTouch et Objective-C, et, si oui, est en développement avec MonoTouch que beaucoup plus simple et rapide que d'apprendre Objective-C, et à son tour, valeur de 400$?

520voto

Rory Blyth Points 10420

J'ai vu cette question (et ses variantes) beaucoup ces derniers temps. Ce qui m'étonne, c'est la façon dont souvent les gens à répondre, mais le peu de réponse.

J'ai mes préférences (j'aime les deux piles), mais c'est là que la plupart des "réponses" commencent à aller mal. Il ne devrait pas être sur de ce que je veux (ou ce que n'importe qui d'autre veut).

Voici comment je voudrais aller sur la détermination de la valeur de MonoTouch - je ne peux pas être objectif, évidemment, mais je pense que c'est assez fanatisme gratuit:

  • Est-ce pour le plaisir ou d'affaires? Si vous avez envie de me lancer dans le consulting dans ce domaine, vous pourriez faire votre $399 retour très rapidement.

  • Voulez-vous apprendre la plate-forme à l'intérieur, ou avez-vous "juste" envie d'écrire des applications pour elle?

  • Aimez-vous .Net assez que l'utilisation d'un autre dev pile serait prendre le plaisir de vous? Encore une fois, j'aime bien les deux piles (Apple et Mono), mais pour moi, MonoTouch rend l'expérience d'autant plus plaisir. Je n'ai pas arrêté à l'aide d'Apple outils, mais c'est surtout parce que je vraiment ne profiter à la fois des piles. J'aime l'iPhone, et je l'aime .Net. Dans ce cas, pour moi, MonoTouch était une évidence.

  • Vous sentez-vous à l'aise de travailler avec des C? Je ne veux pas dire Objective-C, mais C - c'est important parce que Objective-C est C. C'est une belle fantaisie, amical OO version, mais si les pointeurs de vous donner la heebie-heebie, MonoTouch est votre ami. Et n'écoutez pas les sceptiques qui pensent que vous êtes un dev lavette s'il vous arrive de ne pas comme des pointeurs (ou C, etc.). J'ai utilisé pour se promener avec une copie de la ROM IBM BIOS de Poche, et quand j'ai écrit le montage et forcer mon ordinateur en vidéo drôle, modes et de l'écriture de ma propre police de rendu bits pour eux et (certes trash) systèmes de fenêtrage, je ne pense pas que le QuickBasic développeurs ont été wusses. J'ai été un QuickBasic dev (en plus du reste). Ne cédez jamais à nerd machisme. Si vous n'aimez pas C, et si vous n'aimez pas les pointeurs, et si vous voulez rester aussi loin de manuel de gestion de la mémoire que possible (et, pour être juste, il n'est pas mauvais du tout en ObjC), puis... MonoTouch. Et ne prenez pas de toute la société.

  • Aimeriez-vous pour cibler les utilisateurs ou les entreprises? Il n'a pas beaucoup d'importance pour moi, mais il y a encore des gens sur le Bord, et le fait est: vous pouvez créer un beaucoup plus petit package de téléchargement si vous utilisez Apple pile. J'ai été jouer avec MonoTouch, et j'ai un peu décent application qui va, une fois compressé, descend à environ 2,7 MO (lors de la soumission de votre application pour la distribution, vous zip - lorsque des applications sont téléchargées à partir de la boutique, elles sont zippées - donc, lors de savoir si votre application va venir dans le cadre de l'10 MO OTA limite, zip le meunier de première, vous serez agréablement surpris avec MonoTouch). Mais, MT bonheur de côté, une demi-meg contre près de trois (par exemple) est quelque chose qui pourrait être important pour vous si vous ciblez les utilisateurs finaux. Si vous envisagez de travail de l'entreprise, quelques MO n'a pas d'importance du tout. Et, juste pour être clair, je vais soumettre un MT application basée sur le magasin soonishly, et je n'ai aucun problème que ce soit avec la taille. Ne me dérange pas du tout. Mais si c'est quelque chose qui constitueraient une préoccupation pour vous, puis d'Apple pile gagne celui-ci.

  • Faire quelque XML travail? MonoTouch. Période.

  • La manipulation de la chaîne? Date de manipulation? Des millions d'autres petites choses que nous avons pris l'habitude de avec .Net du tout-ET-la-cuisine-évier cadres? MonoTouch.

  • Les services Web? MonoTouch.

  • Syntaxiquement, ils ont tous deux leurs avantages. Objective-C a tendance à être plus verbeux où vous avez à écrire. Vous trouverez vous-même à l'écriture de code en C#, vous n'auriez pas à écrire avec ObjC, mais il va dans les deux sens. Ce sujet pourrait remplir un livre. Je préfère la syntaxe C#, mais après avoir au cours de ma première ça c'est un autre monde de réaction à Objective-C, j'ai appris à l'apprécier un peu. Je me moque un peu dans les discussions (c' est bizarre pour les devs qui sont utilisés pour C#/Java/etc.), mais la vérité est que j'ai un Objectif-C en forme de place dans mon cœur qui me rend heureuse.

  • Prévoyez-vous d'utiliser Interface Builder? Parce que, même dans cette première version, je me retrouve à faire beaucoup moins de travail pour construire mon Isu avec l'IB et puis de les utiliser dans le code. Il se sent comme toute les étapes sont absents de l'Objective-C/IB façon de faire les choses, et je suis sûr que c'est parce que toute les étapes sont absents de l'Objective-C/IB façon de faire les choses. Jusqu'à présent, et je ne pense pas que j'ai suffisamment testé, mais jusqu'à présent, MonoTouch est le gagnant ici pour savoir comment beaucoup moins de travail que vous avez à faire.

  • Pensez-vous qu'il est amusant d'apprendre de nouvelles langues et de plates-formes? Si oui, l'iPhone a beaucoup à offrir, et Apple pile sera susceptible de vous sortir de votre confort-zone - qui, pour certains devs, est amusant (Hi - je suis un de ces devs - je plaisante à ce sujet et de donner à Apple un moment difficile, mais j'ai eu beaucoup de plaisir à apprendre de développement pour iPhone par Apple outils).

Il y a donc beaucoup de choses à considérer. La valeur est abstraite. Si nous parlons de coûts et de savoir si ça vaut le coup, la réponse revient à mon premier élément de puce: si ce n'est pour les affaires, et si vous pouvez faire le travail, vous allez faire de votre argent sur le dos.

Alors... c'est à peu près comme objectif que je peux être. C'est une courte liste de ce que vous pourriez vous poser, mais c'est un point de départ.

Personnellement (laissons tomber l'objectivité pour un moment), j'aime et que j'utilise à la fois. Et je suis heureux que j'ai appris la Pomme de la pile en premier. Il m'était plus facile de se lever et courir avec MonoTouch quand je connaissais déjà mon chemin autour de la Pomme du monde. Comme d'autres l'ont dit, vous êtes toujours va travailler avec CocoaTouch - il va juste être dans un .Net-isée de l'environnement.

Mais il n'y a plus que cela. Les gens qui n'ont pas utilisé MonoTouch ont tendance à s'arrêter là: "C'est un wrapper bla bla bla" - ce n'est pas MonoTouch.

MonoTouch vous donne accès à ce qui CocoaTouch a à offrir tout en vous donnant accès à quoi (un sous-ensemble de) .Net a à offrir, une IDE certaines personnes se sentent plus à l'aise avec (je suis l'un d'entre eux), une meilleure intégration avec Interface Builder, et même si vous n'obtenez pas de les oublier complètement de gestion de la mémoire, vous obtenez un joli certaine marge de manœuvre.

Si vous n'êtes pas sûr, prenez Apple pile (c'est gratuit), et de saisir le MonoTouch eval de la pile (c'est gratuit). Jusqu'à ce que vous vous joignez d'Apple dev programme, les deux seront exécutés uniquement sur le simulateur, mais c'est assez pour vous aider à déterminer si vous largement préférer l'une à l'autre, et si possible MonoTouch est, pour vous, d'une valeur de $399.

Et n'écoutez pas les zélotes ont - ils tendance à être ceux qui n'ont pas utilisé la technologie qu'ils sont de s'insurger contre :)

62voto

miguel.de.icaza Points 27138

Il y a beaucoup d’ouï‑dire dans ce post des développeurs qui n’ont pas essayé MonoTouch et Objective-C. Il semble être pour la plupart des développeurs Objective-C qui n’ont jamais essayé MonoTouch.

Je suis évidemment partial, mais vous pouvez vérifier ce que la communauté MonoTouch a été jusqu'à en :

http://xamarin.com

Vous y trouverez plusieurs articles des développeurs qui ont développé en Objective-C et c#.

39voto

BobbyShaftoe Points 19925

Donc, ma réponse à une précédente question similaire est à apprendre Objective-C. (Aussi, ne pas oublier la prise en charge du débogage)

Ce sera probablement en choquer certains, mais pour être honnête, si vous allez faire tout développement grave, vous devriez apprendre Objective-C. de ne Pas savoir Objective-C dans le développement iPhone sera juste une l'obstacle. Vous ne serez pas en mesure de comprendre de nombreux exemples; vous avez à composer avec les caprices de Mono alors que si vous avez une connaissance de travail de Objective-C, vous pourriez obtenir beaucoup plus de de la plate-forme de documentation.

Personnellement, je ne comprends pas l' position qui dit que l'augmentation de la quantité d'informations dont vous avez besoin dans faveur de l'utilisation de Mono-dessus de la plate-forme de la langue maternelle. Il semble un peu contre-productif pour moi. J' pense que si c'est très cher proposition (l'apprentissage d'une nouvelle langue) ensuite, il peut être intéressant de passer quelques temps sur les fondamentaux de la programmation les concepts de sorte que l'apprentissage de nouvelles langues est un assez bon marché la proposition.

Un autre utilisateur a également écrit ceci:


Monotouch est plus facile pour vous maintenant. Mais plus difficile plus tard.

Par exemple, ce qui se produit lorsque de nouvelles graines à venir, vous avez besoin de tester mais pause MonoTouch pour une raison quelconque?

En collant avec Mono, à tout moment vous êtes à la recherche de ressources pour les cadres que vous avez à traduire mentalement dans la façon dont vous allez utiliser avec Mono. Votre application binaires sera plus grande, le temps de développement, pas beaucoup plus vite après quelques mois en Objective-C, et d'autres applications, les développeurs auront beaucoup plus d'un avantage sur vous, car ils sont à l'aide de la plate-forme native.

Une autre considération est que vous êtes à la recherche d'utiliser le C# parce que vous êtes plus familier avec la langue que l'Objective-C., Mais la grande majorité de la courbe d'apprentissage pour l'iPhone n'est pas Objective-C, il est les cadres qui vous aurez à composer avec C#.

Pour toute plate-forme, vous devez utiliser la plate-forme qui exprime directement la philosophie de conception de la plate - forme sur l'iPhone, qui est Objective-C. Pensez à ce sujet le revers, si un développeur Linux utilisé pour la programmation GTK voulais écrire des applications Windows voulez-vous sérieusement vous recommandons de ne pas utiliser le C# et le bâton à GTK parce qu'il était "plus facile" pour eux de le faire?


27voto

Paul Points 303

À l'aide de Mono n'est pas une béquille. Il y a beaucoup de choses qu'il ajoute à l'iPhone OS. LINQ, WCF, partageable code entre une application Silverlight, un ASP.NET page, une application WPF, un Formulaire Windows app, et il y a aussi mono pour Android et il va travailler pour Windows Mobile.

Ainsi, vous pouvez dépenser beaucoup de temps à écrire Objective-C (Vous allez voir de nombreuses études où exactement le même exemple de code en C# est beaucoup moins que la rédaction d'OC) et en DOUBLE pour les autres plates-formes. Pour moi, j'ai choisi MonoTouch parce que le Nuage Application que je suis en train d'écrire aurez de nombreuses interfaces, l'iPhone n'étant que l'un d'entre eux. Ayant de données WCF en streaming à partir du nuage de MonoTouch application est incroyablement simple. J'ai bibliothèques de base qui sont partagés entre les différentes plates-formes, puis seulement besoin d'écrire une simple couche de présentation pour l'iPhone/WinMobile/Android/SilverLight/WPF/ASP.NET déploiements. Recréer tout en Objective-C serait une énorme perte de temps à la fois pour la phase initiale de développement et d'entretien que le produit continue d'aller de l'avant, puisque toutes les fonctionnalités devraient être répliquées plutôt que de les réutiliser.

Les gens qui sont insultants MonoTouch ou insinuer que les utilisateurs de il a besoin d'une béquille sont dépourvues de la Grande Image de ce que signifie avoir le .NET framework au bout de vos doigts et peut-être ne pas comprendre la séparation de la logique de la présentation qui est faite d'une manière qui peut être réutilisé sur plusieurs plateformes et appareils.

Objective-C est intéressant et très différent de la plupart des langues communes. J'ai comme un défi et l'apprentissage de différentes approches... mais pas en faisant de la sorte, l'entrave mes progrès ou crée inutile de re-codage. Il y a vraiment de grandes choses sur le SDK de l'iPhone, mais tous que la grandeur est entièrement pris en charge avec MonoTouch et coupe tous le manuel de gestion de la mémoire, réduit la quantité de code nécessaire pour effectuer les mêmes tâches, me permet de réutiliser mes assemblées, et garde mes options ouvertes pour être en mesure de se déplacer vers d'autres appareils et plates-formes.

19voto

BahaiResearch.com Points 14967

Je suis passé. MonoTouch m’Ecrivons apps au moins 3 - 4 fois plus rapide (4 applications par mois par rapport à mon vieux 1 par mois en Obj C)

Beaucoup moins de dactylographie.

Juste mon expérience.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X