J'ai vu cette question (et ses variantes) beaucoup ces derniers temps. Ce qui m'étonne, c'est la fréquence à laquelle les gens répondent, mais peu de réponses .
J'ai mes préférences (j'aime les deux piles), mais c'est là que la plupart des «réponses» commencent à mal tourner. Cela ne devrait pas concerner ce que je veux (ou ce que quelqu'un d'autre veut).
Voici comment je procéderais pour déterminer la valeur de MonoTouch - je ne peux pas être objectif, évidemment, mais je pense que c'est assez sans fanatisme:
Est-ce pour le plaisir ou les affaires? Si vous vouliez vous lancer dans le conseil dans ce domaine, vous pourriez récupérer votre 399 $ très rapidement.
Voulez-vous apprendre la plate-forme à l'envers, ou voulez-vous "simplement" écrire des applications pour elle?
Aimez-vous suffisamment .Net pour que l'utilisation d'une pile de développement différente vous enlève le plaisir? Encore une fois, j'aime les deux piles (Apple et Mono), mais pour moi, MonoTouch rend l'expérience beaucoup plus amusante. Je n'ai pas cessé d'utiliser les outils d'Apple, mais c'est principalement parce que j'aime vraiment les deux piles . J'adore l'iPhone et j'aime .Net. Dans ce cas, pour moi, MonoTouch était une évidence.
Vous sentez-vous à l'aise de travailler avec C? Je ne veux pas dire Objective-C, mais C - c'est important parce que Objective-C est C. C'est une version OO sympa, élégante et conviviale, mais si les pointeurs vous donnent les heebie-jeebies, MonoTouch est votre ami. Et n'écoutez pas les opposants qui pensent que vous êtes un witch dev s'il arrive que vous n'aimez pas les pointeurs (ou C, etc.). Je me promenais avec une copie de l'IBM ROM BIOS Pocket Reference, et quand j'écrivais l'assemblage et forçais mon ordinateur dans des modes vidéo drôles et écrivais mes propres bits de rendu de police pour eux et les systèmes de fenêtrage (certes trash), je ne faisais pas '' Je pense que les développeurs QuickBasic étaient des wusses. J'étaisun développeur QuickBasic (en plus du reste). Ne cédez jamais au machisme nerd. Si vous n'aimez pas C, et si vous n'aimez pas les pointeurs, et si vous voulez rester aussi loin que possible de la gestion manuelle de la mémoire (et, pour être honnête, ce n'est pas mal du tout en ObjC), alors. .. MonoTouch. Et ne vous en faites pas.
Souhaitez-vous cibler des utilisateurs ou des entreprises? Cela n'a pas beaucoup d'importance pour moi, mais il y a encore des gens sur Edge, et le fait est: vous pouvez créer un package de téléchargement beaucoup plus petit si vous utilisez la pile d'Apple. J'ai joué avec MonoTouch, et j'ai une petite application décente qui, une fois compressée, atteint environ 2,7 Mo (lorsque vous soumettez votre application pour distribution, vous la fermez - lorsque les applications sont téléchargées depuis la boutique, elles '' zippé à nouveau - donc lorsque vous déterminez si votre application va entrer sous la limite de 10 Mo OTA, fermez d'abord la ventouse - vous serez agréablement surpris par MonoTouch). Mais, le bonheur MT mis à part, une demi-méga contre près de trois (par exemple) est quelque chose qui pourrait être important pour vous si vous ciblez les utilisateurs finaux. Si vous songez au travail en entreprise, quelques Mo n'auront aucune importance. Et, juste pour être clair - je vais bientôt soumettre une application basée sur MT au magasin, et je n'ai aucun problème avec la taille. Ça ne me dérange pas du tout. Mais si c'est quelque chose qui concerneraitvous , alors la pile d'Apple gagne celle-ci.
Faire du travail XML? MonoTouch. Période.
Manipulation de chaînes? Manipulation de date? Un million d'autres petites choses auxquelles nous nous sommes habitués avec les cadres tout-ET-la-cuisine-évier de .Net? MonoTouch.
Services Web? MonoTouch.
Syntaxiquement, ils ont tous deux leurs avantages. Objective-C a tendance à être plus verbeux là où vous devez l'écrire . Vous vous retrouverez à écrire du code avec C # que vous n'auriez pas à écrire avec ObjC, mais cela va dans les deux sens. Ce sujet particulier pourrait remplir un livre. Je préfère la syntaxe C #, mais après avoir surmonté ma réaction initiale d'un autre monde à Objective-C, j'ai appris à l'apprécier un peu. Je me moque de un peu en pourparlers (il est bizarre pour les devs qui sont utilisés pour C # / Java / etc.), Mais la vérité est que j'ai une forme Objective-C place dans mon cœur qui me rend heureux.
Envisagez-vous d'utiliser Interface Builder? Parce que, même dans cette première version, je me retrouve à faire beaucoup moins de travail pour créer mes interfaces utilisateur avec IB, puis les utiliser dans le code. Il semble que des étapes entières manquent dans la façon de faire Objective-C / IB, et je suis sûr que c'est parce que des étapes entières manquent dans la façon de faire Objective-C / IB. Jusqu'à présent, et je ne pense pas avoir suffisamment testé, mais jusqu'à présent , MonoTouch est le gagnant ici pour combien moins de travail vous avez à faire.
Pensez-vous que c'est amusant d'apprendre de nouvelles langues et plateformes? Si c'est le cas, l'iPhone a beaucoup à offrir, et la pile d'Apple vous sortira probablement de votre zone de confort - ce qui, pour certains développeurs, est amusant (Salut - je suis l'un de ces développeurs - je plaisante à ce sujet et donne Apple a du mal, mais j'ai eu beaucoup de plaisir à apprendre le développement de l'iPhone grâce aux outils d'Apple).
Il y a tellement de choses à considérer. La valeur est tellement abstraite. Si nous parlons de coût et si cela en vaut la peine, la réponse se résume à mon premier point: si c'est pour les affaires et si vous pouvez obtenir le travail, vous gagnerez votre argent immédiatement.
Donc ... c'est aussi objectif que possible. Voici une courte liste de ce que vous pourriez vous demander, mais c'est un point de départ.
Personnellement (laissons tomber l'objectivité un instant), j'adore et j'utilise les deux. Et je suis content d'avoir d'abord appris la pile Apple. Il était plus facile pour moi de devenir opérationnel avec MonoTouch alors que je connaissais déjà mon chemin dans le monde d'Apple. Comme d'autres l'ont dit, vous allez toujours travailler avec CocoaTouch - cela va juste être dans un environnement .Net-ized.
Mais il y a plus que ça. Les gens qui n'ont pas utilisé MonoTouch ont tendance à s'arrêter là - "C'est un emballage bla bla bla" - ce n'est pas MonoTouch.
MonoTouch vous donne accès à ce que CocoaTouch a à offrir tout en vous donnant accès à ce que (un sous-ensemble de) .Net a à offrir, un IDE avec lequel certaines personnes se sentent plus à l'aise (j'en fais partie), une meilleure intégration avec Interface Builder , et bien que vous n'ayez pas à oublier complètement la gestion de la mémoire, vous bénéficiez d'une bonne marge de manœuvre.
Si vous n'êtes pas sûr, prenez la pile d'Apple (c'est gratuit) et prenez la pile d'évaluation MonoTouch (c'est gratuit). Jusqu'à ce que vous rejoigniez le programme de développement d'Apple, les deux ne fonctionneront que contre le simulateur, mais cela suffit pour vous aider à savoir si vous préférez largement l'un à l'autre, et possible si MonoTouch vaut, pour vous, la valeur de 399 $.
Et n'écoutez pas les fanatiques - ils ont tendance à être ceux qui n'ont pas utilisé la technologie contre laquelle ils se repentent :)