Comment décider entre MonoTouch et Objective-C?
Après avoir été 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$?
- Je pense que beaucoup de commentaires au sujet de MonoTouch de ne pas être capable de tourner sur iOS n'est plus valable depuis Apple détendue ses outils de dev de restriction. Voir: apple.com/pr/library/2010/09/09statement.html
Vous devez vous connecter pour publier un commentaire.
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 comment peu 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-out, ou avez-vous "juste" envie d'écrire des applications pour elle?
Vous aimez .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 de 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. Je était 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 guff pour elle.
Vous souhaitez 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 it - 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 concernerait vous, puis d'Apple pile gagne celui-ci.
De faire toute XML travail? MonoTouch. Période.
De manipulation de 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.
Web services? MonoTouch.
Syntaxiquement, ils ont tous deux leurs avantages. Objective-C a tendance à être plus prolixe où vous devez é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 (il 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 du plaisir à 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 plaisir (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 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 🙂
Il y a beaucoup de ouï-dire dans ce post de développeurs qui n'ont pas essayé MonoTouch et Objective-C. Il semble être principalement Objective-C les développeurs qui n'ont jamais essayé MonoTouch.
Je suis évidemment partial, mais vous pouvez vérifier ce que le MonoTouch de la communauté a été à la hauteur dans:
http://xamarin.com
Vous y trouverez plusieurs articles de développeurs qui se sont développés à la fois Objective-C et C#.
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)
Un autre utilisateur aussi é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?
Par collage 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# ainsi.
De la 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?
À 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 un é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.
Je suis passé. Monotouch laissez-moi écrire des applications au moins 3-4 fois plus vite (les 4 applications par mois, comparé à mon vieux 1 par mois en Obj C)
Beaucoup moins de frappe.
Juste mon expérience.
Si c'est la seule application pour iPhone vous aurez à développer, et vous avez également intérêt zéro dans le développement d'applications Mac, jamais, puis MonoTouch est probablement vaut le coût.
Si vous pensez que vous aurez à développer plus d'applications de l'iPhone, ou sera jamais envie de faire quelques Mac natif de développement, il est probablement utile pour apprendre l'Objective-C et les infrastructures associées. De Plus, si vous êtes le genre de programmeur qui aime apprendre de nouvelles choses, c'est un plaisir nouveau paradigme pour l'étude.
Personnellement, je pense que vous aurez un meilleur temps de l'apprentissage Objective-C.
En bref:
J'ai trouvé que les projets de l'Unité et MonoTouch sont censés "vous sauver du temps", mais en fin de compte, vous aurez besoin d'apprendre leur langage spécifique au domaine de toute façon et auront à côté de l'étape de choses à la fois. Tout ce qui va probablement vous prendre autant de temps qu'il en faudrait pour apprendre la langue que vous essayez d'éviter d'apprentissage (du calendrier). En fin de compte vous n'avez pas sauver tout le temps et vous sont étroitement associés à certains produits.
EDIT: je n'ai jamais voulu insinuer quelque chose de négatif à propos de .NET-je arriver à être un grand fan de lui. Mon point est que l'ajout de plusieurs couches de complexité juste parce que vous n'êtes pas encore à l'aise avec l'excentrique objc support de la notation n'a pas vraiment beaucoup de sens pour moi.
2019 mise à jour: Il est 7 ans plus tard. Je ressens toujours de la même façon, si ce n'est plus. Bien sûr, le domaine spécifique de la langue " peut avoir été le mauvais terme à utiliser, mais je crois toujours que c'est beaucoup mieux d'écrire directement pour la plate-forme de travail avec lui et éviter de compatibilité des couches et des abstractions autant que possible. Si vous êtes inquiet au sujet de la réutilisation de code et re-travail, d'une manière générale toutes les fonctionnalités de votre croix-plate-forme d'application doit effectuer peut probablement être accompli avec moderne des technologies du web.
À ajouter à ce que d'autres ont déjà dit (bien!): mon sentiment est que vous êtes essentiellement en doublant le nombre de bugs que vous avez à vous soucier, en ajoutant ceux de MonoTouch à celles qui sont déjà dans l'iPhone OS. La mise à jour pour les nouvelles versions de système d'exploitation sera encore plus douloureux que la normale. Beurk, tout autour.
La seule convaincante cas je peux voir pour MonoTouch est des organisations qui ont beaucoup, beaucoup de C#, programmeurs et de code C# qui traînent qu'ils doit effet de levier sur l'iPhone. (Le genre de boutique qui n'a même pas de clignoter à $3500.)
Mais pour quiconque de commencer à partir de zéro, je ne peux vraiment pas le voir comme étant utile et sage.
Trois mots: Linq to SQL
Oui, c'est bien la peine de l' $.
Quelque chose que j'aimerais ajouter, même si il y a un acceptées réponse - qui est-à-dire que Apple ne sera pas seulement de rejeter les applications qui ont des signes d'être construit avec des Mono Touch?
Je voudrais investir le temps en Objective-C, principalement en raison de toute l'aide que vous pouvez obtenir à partir de sites de ce genre. La puissance est de l'Objective-C est que vous pouvez utiliser du code C et C++, et il y a beaucoup de projets qui sont bien testé.
Autre chose, c'est que vous êtes le code de la langue (au choix) sera pris en charge par apple. Ce qu'il iOS 5.x par exemple supprime le support pour un tiers solution comme MonoTouch? Qu'allez-vous dire à vos clients alors?
C'est peut-être préférable d'utiliser une plate-forme indépendante de la solution, comme le HTML5 si vous n'êtes pas ensemble prêt à passer à l'Objective-C?
J'ai été en utilisant MonoTouch depuis quelques mois maintenant, j'ai porté à ma moitié fini d'application à partir de l'ObjectiveC afin que je puisse soutenir Android à un certain moment dans l'avenir.
Voici mon expérience:
Mauvais bits:
Xamarin Studio. Indie les développeurs comme moi sont obligés d'utiliser de Xamarin Studio. Il est de mieux en mieux chaque semaine, les développeurs sont très actifs sur les forums, l'identification et la correction des bugs, mais c'est toujours très lent, souvent se bloque, a beaucoup de bugs et de débogage est assez lent aussi.
Temps de construire. La construction de ma grand (lien) application de débogage sur un périphérique peut prendre quelques minutes, c'est par rapport à XCode qui se déploie presque immédiatement. Bâtiment pour le simulateur (non lié) est un peu plus rapide.
MonoTouch questions. J'ai éprouvé des problèmes de fuite de mémoire causées par la gestion des événements, et ont eu à mettre dans certaines assez laid solutions de contournement pour éviter les fuites, comme les attacher et de détacher des événements quand entrer et sortir de vues. Le Xamarin développeurs sont activement à la recherche dans les questions de ce genre.
3ème partie les bibliothèques. J'ai passé assez de temps de conversion/de liaison ObjectiveC les bibliothèques à utiliser dans mon application, même si c'est de mieux en mieux avec le logiciel automatisé comme Objectif Sharpie.
Plus binaires. Ce ne sont pas vraiment me dérange pas, mais pensé que je le mentionne. IMO un couple d'extra Mo n'en est rien, ces jours-ci.
Bonne bits:
Multi-plateforme. Mon ami est heureux de la création d'une version Android de mon application à partir de ma base de code, nous sommes en train de développer en parallèle et sont en train de commettre à distance à un dépôt Git sur Dropbox, il va bien.
.Net. Travaillant en C# .Net est beaucoup plus agréable que Objective C OMI.
MonoTouch. À peu près tout dans iOS est reflété dans .Net et il est assez simple à obtenir des choses de travail.
Xamarin. Vous pouvez voir que ces gars-là sont vraiment de travail pour améliorer le tout, rendre le développement plus souple et plus facile.
Je vous recommande vraiment de Xamarin pour la croix-plate-forme de développement, surtout si vous avez l'argent pour l'utilisation de l'entreprise ou de l'Entreprise les éditions travailler avec Visual Studio.
Si vous êtes seulement la création d'une application pour iPhone qui ne sera jamais nécessaire sur une autre plate-forme, et vous êtes un développeur indépendant, je collerais avec XCode et Objective-C pour l'instant.
Que quelqu'un avec de l'expérience avec C# ainsi que l'Objective-C, je dirais que pour la plupart des gens Xamarin sera bien en valeur l'argent.
C# est vraiment bien conçu de la langue et de l'API C# sont bien conçus ainsi. Bien sûr, le Cacao Toucher l'API (y compris UIKit) ont une grande conception de l', mais la langue peut être amélioré de plusieurs façons. Lorsque l'on écrit en C#, vous aurez probablement à être plus productif par rapport à l'écriture le même code en Objective-C. Ceci est dû à plusieurs raisons, mais certaines de ces raisons serait:
C# a l'inférence de type. L'inférence de Type permet d'écrire du code plus rapide, puisque vous n'avez pas de "connaître" le type sur la partie gauche d'une affectation. Il rend également refactoring plus facile et plus économiseur d'.
C# a les génériques, ce qui permettra de réduire les erreurs par rapport à l'équivalent code Objective-C (bien qu'il existe quelques solutions de rechange en Objective-C, dans la plupart des situations, les développeurs de les éviter).
Récemment Xamarin a ajouté le support pour Async /Await, ce qui permet d'écrire du code asynchrone très facile.
Vous serez en mesure de réutiliser une partie de la base de code sur iOS, Android et Windows Phone.
MonoTouch en grande partie met en œuvre la CocoaTouch de l'API d'une manière très simple. E. g.: si vous avez de l'expérience avec CocoaTouch, vous savez où trouver des cours pour les contrôles dans MonoTouch (MonoTouch.UIKit contient des classes pour UIButton, UIView, UINavigationController, etc..., de même MonoTouch.La fondation a obtenu des classes pour NSString, NSData, etc...).
Xamarin permettra d'offrir aux utilisateurs une expérience native, contrairement à des solutions comme PhoneGap ou Titanium.
Maintenant Objective-C a certains avantages par rapport à C#, mais dans la plupart des situations d'écrire des applications en C# résulte généralement en moins de développer le temps et plus propre code et moins de travail à port la même application à d'autres plates-formes. Une exception notable pourrait être de haute performance jeux qui s'appuient sur OpenGL.
Le coût de la MonoTouch bibliothèque est complètement à côté de la question. La raison pour laquelle vous ne devriez pas utiliser Mono pour votre iPhone apps, c'est que c'est une béquille. Si vous ne pouvez pas être pris la peine d'apprendre les outils natifs, alors je n'ai aucune raison de croire que votre produit est intéressant de téléchargement.
Edit: 4/14/2010 les Applications écrites avec MonoTouch ne sont pas admissibles pour l'iTunes Store. C'est ainsi que cela devrait être. Apple a vu beaucoup de petits ports sur le Mac, à l'aide de la croix-plate-forme de boîtes à outils comme Qt ou d'Adobe partielle de la re-mise en œuvre du Système 7 boîte à outils, et le long et à court de celui-ci est tout simplement pas assez bon.