Jak zdecydować między MonoTouch i Objective-C? [zamknięte]

zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Zaktualizuj pytanie, aby mogło być odpowiedź z faktami i cytatami przez edytując ten post .

Zamknięte 1 rok temu .

Popraw to pytanie

Po dzisiejszej sesji na Mono na lokalnym wydarzeniu. Net, użycie MonoTouch zostało "poruszone" jako alternatywa dla rozwoju iPhone ' a. Bardzo wygodne w C# i. Net, wydaje się to atrakcyjną opcją, pomimo niektórych dziwactw stosu Mono. Jednak ponieważ MonoTouch kosztuje $400, jestem nieco rozdarty, jeśli jest to droga do rozwoju iPhone ' a.

Ktoś ma doświadczenie w rozwijaniu z MonoTouch i Objective-C, a jeśli tak, to czy rozwijanie z MonoTouch jest o wiele prostsze i szybsze niż uczenie się Objective-C, a z kolei warte 400 dolarów?

Author: jamesaharvey, 2009-10-18

14 answers

Widziałem to pytanie (i jego wariacje) ostatnio dużo. Zadziwia mnie to, jak często ludzie odpowiadają, ale jak mało odpowiada .

Mam swoje preferencje( Lubię oba stosy), ale to tutaj większość "odpowiedzi" zaczyna się mylić. Nie powinno być o tym ,czego chcę (lub co ktoś inny chce).

Oto jak bym ustalił wartość MonoTouch - nie mogę być obiektywny, oczywiście, ale myślę, że jest to dość fanotyczne:

  • Czy to dla Zabawy czy interesy? Jeśli chcesz dostać się do konsultacji w tej dziedzinie, można zrobić swoje $399 z powrotem bardzo szybko.

  • Chcesz poznać platformę na wylot, czy" po prostu " chcesz pisać aplikacje do niej?

  • Czy podoba Ci się. net na tyle, że użycie innego stosu deweloperów sprawi ci frajdę? Ponownie Lubię oba stosy (Apple i Mono), ale dla mnie MonoTouch sprawia, że doświadczenie jest o wiele bardziej zabawne. Nie przestałem używać narzędzi Apple ' a, ale to głównie ponieważ naprawdę lubię oba stosy . Uwielbiam iPhone ' a i kocham .Net. w takim razie dla mnie MonoTouch był bezmyślny.

  • Czy czujesz się komfortowo pracując z C? Nie chodzi mi o Objective-C, ale c-to ma znaczenie, ponieważ Objective-C to C. Jest to fajna, fantazyjna, przyjazna wersja OO, ale jeśli wskaźniki dają Ci heebie-jeebies, MonoTouch jest twoim przyjacielem. I nie słuchaj naysayerów, którzy myślą, że jesteś dev ciotą, jeśli zdarzy ci się, że nie lubisz wskaźniki (lub C, itp.). Kiedyś chodziłem z kopią IBM ROM BIOS Pocket Reference, a kiedy pisałem montaż i zmuszałem mój komputer do zabawnych trybów wideo i pisałem własne bity renderowania czcionek dla nich i (co prawda tandetne) systemy windowsowe, nie sądziłem, że programiści QuickBasic byli mięczakami. I był QuickBasic dev (oprócz reszty). Nigdy nie poddawaj się nerdowskiemu machismo. Jeśli nie lubisz C, i jeśli nie lubisz wskaźników, i jeśli chcesz trzymać się z dala od ręczne zarządzanie pamięcią, jak to możliwe (i, szczerze mówiąc, w ObjC wcale nie jest źle)... MonoTouch. I nie bierz za to żadnych wygłupów.

  • Chcesz kierować reklamy do użytkowników lub firm? Nie ma to dla mnie większego znaczenia, ale wciąż są ludzie na krawędzi, a faktem jest: możesz utworzyć znacznie mniejszy pakiet pobierania, jeśli używasz stosu Apple. Bawiłem się monotouchem i mam przyzwoitą małą aplikację, która po skompresowaniu spada do około 2.7 MB (przesyłając aplikację do dystrybucji, zapinasz ją-gdy aplikacje są pobierane ze sklepu, są zapinane na zamek błyskawiczny - więc gdy zastanawiasz się, czy Twoja aplikacja wejdzie w ramach limitu 10MB OTA, zapnij najpierw frajera - będziesz mile zaskoczony MonoTouch). Ale pomijając szczęście MT, pół meg vs. prawie trzy (na przykład) to coś, co może być dla Ciebie ważne, jeśli kierujesz do użytkowników końcowych. Jeśli myślisz o pracy w przedsiębiorstwie, kilka MB nie będzie miało znaczenia. I po prostu być jasne - niebawem wyślę do sklepu aplikację opartą na MT i nie mam żadnego problemu z rozmiarem. Wcale mi to nie przeszkadza. Ale jeśli to dotyczy ciebie , to stos Apple ' a wygrywa ten.

  • Robisz jakąś pracę XML? MonoTouch. Kropka.

  • Manipulacja sznurkiem? Manipulacja datą? Milion innych drobiazgów, do których przyzwyczailiśmy się z frameworkami. Net "wszystko-i-kuchnia-zlewozmywak"? MonoTouch.

  • Usługi internetowe? MonoTouch.

  • Składniowo, obie mają swoje zalety. Objective-C zazwyczaj jest bardziej wyrazisty , gdzie trzeba go napisać . Znajdziesz się pisząc kod w C# nie musiałbyś pisać w ObjC, ale to działa w obie strony. Ten konkretny temat mógłby wypełnić książkę. Preferuję składnię C#, ale po przejściu mojej początkowej, nieziemskiej reakcji na Objective-C, nauczyłem się cieszyć nim całkiem nieźle. Nabijam się z to trochę w rozmowach (to jest dziwne dla programistów, którzy są przyzwyczajeni do C#/Java/etc.), ale prawda jest taka, że mam w sercu punkt w kształcie obiektywu C, który mnie uszczęśliwia.

  • Czy planujesz korzystać z Interface Builder? Ponieważ, nawet w tej wczesnej wersji, robię znacznie mniej pracy, aby zbudować mój interfejs użytkownika z IB, a następnie używać ich w kodzie. Wydaje mi się, że brakuje całych kroków w celu-C / IB sposób robienia rzeczy, i jestem prawie pewien, że to dlatego, że brakuje całych kroków z Cel-C/IB sposób robienia rzeczy. Do tej pory, i nie sądzę, że wystarczająco przetestowałem, ale do tej pory, MonoTouch jest zwycięzcą tutaj za ile mniej pracy trzeba zrobić.

  • Czy uważasz, że nauka nowych języków i platform jest zabawna? Jeśli tak, iPhone ma wiele do zaoferowania, a stos Apple prawdopodobnie wydostanie Cię ze strefy komfortu-co dla niektórych programistów jest zabawą (Cześć - jestem jednym z tych programistów - żartuję z tego i daję Apple ' owi ciężki czas, ale miałem wiele zabawy nauki rozwoju iPhone ' a za pomocą narzędzi Apple).

Jest tyle rzeczy do rozważenia. Wartość jest taka abstrakcyjna. Jeśli mówimy o kosztach i czy warto, odpowiedź sprowadza się do mojej pierwszej pozycji bullet: jeśli to jest dla biznesu, a jeśli można dostać pracę, będziesz zarabiać pieniądze z powrotem.

Więc... to tak obiektywne, jak tylko mogę. To jest krótka lista tego, co możesz sobie zadać, ale to punkt wyjścia.

Osobiście (niech porzuć na chwilę obiektywizm), kocham i używam obu. I cieszę się, że najpierw nauczyłem się stosu jabłek. Łatwiej było mi zacząć działać z MonoTouch, gdy już znałem swój sposób na świecie Apple. Jak powiedzieli inni, nadal będziesz pracować z CocoaTouch - to będzie po prostu w środowisku.Net.

Ale jest coś więcej. Ludzie, którzy nie używali MonoTouch mają tendencję do zatrzymywania się na tym - "to opakowanie bla bla bla" - to nie jest MonoTouch.

MonoTouch daje Ci dostęp do tego, co CocoaTouch ma do zaoferowania, jednocześnie dając Ci dostęp do tego, co (podzbiór). Net ma do zaoferowania, IDE, z którym niektórzy czują się bardziej komfortowo (jestem jednym z nich), lepszą integrację z Interface Builder i chociaż nie możesz całkowicie zapomnieć o zarządzaniu pamięcią, masz niezły stopień swobody.

Jeśli nie jesteś pewien, Złap stos Apple ' a (jest bezpłatny) i złap stos MonoTouch eval (jest bezpłatny). Dopóki nie dołączysz do Apple ' a program dev, oba będą działać tylko na symulatorze, ale to wystarczy, aby pomóc dowiedzieć się, czy zdecydowanie wolisz jeden od drugiego, i możliwe, czy MonoTouch jest dla ciebie wart 399 dolarów.

I nie słuchaj fanatyków - to oni nie korzystali z technologii, z którą się borykają:)

 520
Author: Rory Blyth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-28 00:51:08

Jest wiele pogłosek w tym poście od programistów, którzy nie próbowali MonoTouch i Objective-C. wydaje się, że w większości są to Programiści Objective-C, którzy nigdy nie próbowali MonoTouch.

Jestem oczywiście stronniczy, ale możecie sprawdzić co robi społeczność MonoTouch:

Http://xamarin.com

Znajdziesz tam kilka artykułów od programistów, którzy opracowali zarówno Objective-C, jak i C#.

 62
Author: miguel.de.icaza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-05 14:07:57

Więc moją odpowiedzią na poprzednie podobne pytanie jest nauczenie się Objective-C. (nie zapomnij również o obsłudze debugowania)

To pewnie niektórych obrazi, ale do bądź szczery, jeśli masz zamiar zrobić jakiekolwiek poważny rozwój, powinieneś się nauczyć Objective-C. niewiedza Objective-C w rozwoju iPhone ' a będzie tylko przeszkoda. Nie będziesz w stanie zrozumieć wiele przykładów; trzeba radzić sobie z dziwactwami Mono jeśli posiadasz praktyczną wiedzę na temat Objective-C można dostać dużo więcej z dokumentacji platformy.

Osobiście nie rozumiem pozycja, która mówi, że zwiększenie ilość potrzebnych informacji w korzyść z używania Mono nad język ojczysty platformy. Wydaje się dla mnie coś przeciwnego do zamierzonego. I pomyśl, czy jest to bardzo drogie propozycja (nauka nowego języka) wtedy może warto wydać trochę czasu na podstawowe programowanie koncepcje, dzięki którym uczenie się nowych języki to dość tani propozycja.

Inny użytkownik napisał także:


Monotouch jest teraz dla ciebie łatwiejszy. Ale trudniej później.

Na przykład, co się dzieje, gdy pojawiają się nowe nasiona, które musisz przetestować, ale z jakiegoś powodu złamać MonoTouch?

Trzymając się Mono, za każdym razem, gdy szukasz zasobów dla frameworków, musisz mentalnie przełożyć się na to, jak zamierzasz ich używać z Mono. Twoje binaria aplikacji będą większe, Twoje po kilku miesiącach pracy nad Objective-C czas tworzenia aplikacji nie jest tak szybki, a inni twórcy aplikacji będą mieli o wiele większą przewagę nad tobą, ponieważ korzystają z natywnej platformy.

Inną kwestią jest to, że chcesz używać C#, ponieważ jesteś bardziej zaznajomiony z językiem niż Objective-C. ale zdecydowana większość krzywej uczenia się dla iPhone ' a nie jest Objective-C, jest to framework - który będziesz musiał również wywołać z C#.

Dla każdego Platforma, powinieneś skorzystać z platformy, która bezpośrednio wyraża filozofię projektowania tej platformy - na iPhonie, czyli Objective-C. pomyśl o tym od strony odwrotnej, gdyby programista Linuksa przyzwyczajony do programowania w GTK chciał pisać aplikacje dla Windows, czy poważnie poleciłbyś, aby nie używali C# i trzymali się GTK, ponieważ było im "łatwiej" to zrobić?


 39
Author: BobbyShaftoe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:30:50

Używanie Mono nie jest kulą u nogi. Jest wiele rzeczy, które dodaje do iPhone OS. LINQ, WCF, sharable code between a Silverlight app, an ASP.NET strona, aplikacja WPF, aplikacja Windows Form, a także mono dla Androida i będzie działać również Dla Windows Mobile.

Możesz więc poświęcić trochę czasu na pisanie Objective - C (zobaczysz z wielu badań, gdzie dokładnie ten sam przykładowy kod w C# jest znacznie mniej do napisania niż OC), a następnie powielić to wszystko na inne platformy. Dla mnie, ja wybrałem MonoTouch, ponieważ aplikacja w chmurze, którą piszę, będzie miała wiele interfejsów, a iPhone jest tylko jednym z nich. Przesyłanie danych WCF z chmury do aplikacji MonoTouch jest szalenie proste. Mam podstawowe biblioteki, które są współdzielone między różnymi platformami, a następnie wystarczy napisać prostą warstwę prezentacji dla wdrożeń iPhone/WinMobile/Android/SilverLight/WPF/ASP.NET. Odtworzenie tego wszystkiego w Objective-C byłoby ogromną stratą czasu zarówno na początkowy rozwój, jak i konserwację ponieważ produkt nadal idzie do przodu, ponieważ wszystkie funkcje musiałyby być replikowane, a nie ponownie wykorzystane.

Ludzie, którzy obrażają MonoTouch lub insynuują, że użytkownicy it potrzebują kuli, nie mają dużego obrazu tego, co to znaczy mieć. NET framework na wyciągnięcie ręki i być może nie rozumieją WŁAŚCIWEGO oddzielenia logiki od prezentacji wykonanej w sposób, który może być ponownie użyty na platformach i urządzeniach.

Objective-C jest ciekawy i bardzo różni się od wiele popularnych języków. Lubię wyzwania i uczyć się różnych podejść... ale nie wtedy, gdy to utrudnia mój postęp lub tworzy niepotrzebne ponowne kodowanie. Istnieje kilka naprawdę wspaniałych rzeczy na temat frameworku SDK iPhone ' a, ale cała ta wielkość jest w pełni obsługiwana przez MonoTouch i wycina całe ręczne zarządzanie pamięcią, zmniejsza ilość kodu wymaganego do wykonywania tych samych zadań, pozwala mi ponownie użyć moich zestawów i utrzymuje moje opcje otwarte, aby móc przejść do innych urządzeń i korzystać z nich. perony.

 27
Author: Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-23 18:53:07

Zamieniłem się. Monotouch Let ' s me write apps co najmniej 3-4 razy szybciej (4 apps per month in my old 1 per month in Obj C)

Dużo mniej pisania.

Po prostu moje doświadczenie.

 19
Author: Ian Vink,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-06 20:15:16

Jeśli jest to jedyna aplikacja na iPhone ' a, którą kiedykolwiek stworzysz, a także nie masz żadnego zainteresowania tworzeniem aplikacji Mac, to MonoTouch jest prawdopodobnie warty swojej ceny.

Jeśli myślisz, że kiedykolwiek stworzysz więcej aplikacji na iPhone ' a lub będziesz chciał wykonać natywny rozwój komputerów Mac, prawdopodobnie warto nauczyć się Objective-C i powiązanych z nimi frameworków. Dodatkowo, jeśli jesteś typem programisty, który lubi uczyć się nowych rzeczy, jest to nowy, zabawny paradygmat do nauki.

 17
Author: phoebus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 02:56:54

Osobiście myślę, że będziesz miał lepszy czas po prostu uczenie się cel-C.

W skrócie:

  • "Nauka Objective-C" nie jest zniechęcająca, jak mogłoby się wydawać, możesz cieszyć się nią już po kilku pierwszych tygodniach
  • jesteś już zaznajomiony ze składnią "C style" z dużą ilością * & () {}; wszędzie
  • Apple zrobił bardzo dobrą robotę dokumentowania rzeczy
  • [5]} będziesz współdziałać z iPhonem tak, jak zamierzał Apple, co oznacza, że otrzymasz korzyści bezpośrednio ze źródła, a nie przez jakiś filtr.

Odkryłem, że projekty takie jak Unity i MonoTouch mają "zaoszczędzić czas" , ale ostatecznie będziesz musiał nauczyć się ich języka specyficznego dla domeny i będziesz musiał czasami coś zrobić. Wszystko to prawdopodobnie zajmie ci tak długo, jak długo uczysz się języka, którego starałeś się uniknąć (w czasie kalendarzowym). W końcu nie oszczędzałeś czasu i jesteś mocno związany z niektórymi produkt.

EDIT: nigdy nie chciałem sugerować niczego negatywnego na temat. NET. Chodzi mi o to, że dodawanie kolejnych warstw złożoności tylko dlatego, że nie czujesz się jeszcze komfortowo z dziwaczną notacją objective nie ma dla mnie większego sensu.

Aktualizacja 2019: jest 7 lat później. Nadal czuję to samo, jeśli nie bardziej. Oczywiście, "język specyficzny dla domeny" mógł być złym terminem, ale nadal uważam, że o wiele lepiej jest pisać bezpośrednio dla platforma, z którą pracujesz i unikaj warstw kompatybilności i abstrakcji w jak największym stopniu. Jeśli martwisz się o ponowne użycie kodu i ponowną pracę, ogólnie rzecz biorąc, każda funkcjonalność, którą Twoja aplikacja wieloplatformowa musi wykonać, może być prawdopodobnie zrealizowana za pomocą nowoczesnych technologii internetowych.

 9
Author: slf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-23 14:03:02

Aby dodać do tego, co inni już powiedzieli (dobrze!): mam wrażenie, że w zasadzie podwajasz liczbę błędów, o które musisz się martwić, dodając te w MonoTouch do tych już w iPhone OS. Aktualizacja dla nowych wersji systemu operacyjnego będzie jeszcze bardziej bolesna niż zwykle. Fuj, wszędzie.

Jedyny przekonujący przypadek jaki widzę dla MonoTouch to organizacje, które mają mnóstwo programistów C# i Kod C# leżących wokół, że MUSZĄ dźwigni na iPhone. (Rodzaj sklep, który nawet nie mruga przy 3500$.)

Ale dla każdego zaczynającego od zera, naprawdę nie widzę tego jako wartościowego lub mądrego.

 4
Author: Sixten Otto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-18 03:26:11

Trzy słowa: Linq do SQL

Yes it is well worth the $.

 4
Author: Bryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-21 21:05:50

Coś chciałbym dodać, mimo że jest akceptowana odpowiedź-kto powiedział, że Apple nie odrzuci tylko aplikacji, które mają oznaki budowania z Mono Touch?

 2
Author: bpapa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-13 18:31:59

Zainwestowałbym czas w Objective-C głównie ze względu na wszelką pomoc, jaką można uzyskać z takich stron. Jedną z mocnych stron Objective - C jest to, że możesz używać kodu C i C++, a istnieje wiele projektów, które są dobrze przetestowane .

Kolejną rzeczą jest to, że kod (język wyboru) będzie obsługiwany przez apple. Co to jest iOS 5.x na przykład usuwa wsparcie dla rozwiązań innych firm, takich jak MonoTouch? Co powiesz swoim klientom więc?

Może lepiej użyć niezależnego od platformy rozwiązania, takiego jak HTML5, jeśli nie jesteś gotowy do przejścia do Objective-C?

 2
Author: Konrad77,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-08 19:43:09

Używam MonoTouch od kilku miesięcy, przeportowałem moją pół gotową aplikację z ObjectiveC, aby w przyszłości móc obsługiwać Androida.

Oto moje doświadczenie:

Bad bits:

  • Studio Xamarin. Twórcy niezależni, tacy jak ja, są zmuszeni do korzystania z Xamarin Studio. Z każdym tygodniem jest coraz lepiej, deweloperzy są bardzo aktywni na forach identyfikując i naprawiając błędy, ale nadal jest bardzo wolny, często się zawiesza, ma dużo błędów i debugowanie jest również dość powolne.

  • Czas budowy. Zbudowanie mojej dużej (połączonej) aplikacji do debugowania na urządzeniu może potrwać kilka minut, jest to w porównaniu do Xcode, który wdraża się niemal natychmiast. Budowanie symulatora (niezwiązane) jest nieco szybsze.

  • Problemy z Monotouchem. Doświadczyłem problemów z wyciekiem pamięci spowodowanych obsługą zdarzeń i musiałem wprowadzić dość brzydkie obejścia, aby zapobiec wyciekom, takie jak dołączanie i odłączanie zdarzeń, gdy wchodzenie i opuszczanie widoków. Programiści Xamarin aktywnie przyglądają się takim problemom.

  • Biblioteki stron trzecich. Spędziłem sporo czasu konwertując / wiążąc Biblioteki ObjectiveC do użycia w mojej aplikacji, chociaż jest to coraz lepsze z automatycznym oprogramowaniem, takim jak Objective Sharpie.

  • Większe binaria. Nie przeszkadza mi to, ale pomyślałem, że o tym wspomnę. IMO kilka dodatkowych Mb to w dzisiejszych czasach nic.

Dobry bity:

  • Wieloplatformowy. Mój przyjaciel z radością tworzy wersję aplikacji na Androida z mojej podstawowej bazy kodowej, rozwijamy się równolegle i zobowiązujemy się do zdalnego repozytorium Git na Dropbox, idzie dobrze.

  • .Net. Praca w C#. Net jest o wiele ładniejsza niż Objective C IMO.

  • MonoTouch. Prawie wszystko w iOS jest odzwierciedlone w. Net i jest dość prosto, aby wszystko działało.

  • Xamarin. Widać, że ci faceci naprawdę pracują, aby poprawić wszystko, dzięki czemu rozwój jest płynniejszy i łatwiejszy.

Zdecydowanie polecam Xamarin do tworzenia różnych platform, szczególnie jeśli masz pieniądze na korzystanie z wersji Business lub Enterprise, które współpracują z Visual Studio.

Jeśli tworzysz wyłącznie aplikację na iPhone ' a, która nigdy nie będzie potrzebna na innej platformie, a jesteś niezależnym deweloperem, na razie zostałbym przy XCode i Objective C.

 2
Author: danfordham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-12 10:46:58

Jako ktoś z doświadczeniem zarówno w C# , jak i Objective-C, powiedziałbym, że dla większości ludzi Xamarin będzie wart swojej ceny.

C # jest naprawdę dobrze zaprojektowanym językiem, a API C# są również dobrze zaprojektowane. Oczywiście API Cocoa Touch (w tym UIKit) mają również świetny design, ale język można poprawić na kilka sposobów. Pisząc w C# będziesz prawdopodobnie bardziej produktywny w porównaniu do pisania tego samego kodu w Objective-C. wynika to z kilku powodów, ale niektóre powody to:

  • C # has type inference. Wnioskowanie typu sprawia, że pisanie kodu jest szybsze, ponieważ nie musisz "znać" typu po lewej stronie zadania. To również sprawia, że refaktoryzacja jest łatwiejsza i bardziej oszczędna.

  • C # ma generyki , które zmniejszą błędy w porównaniu do równoważnego kodu Objective-C (choć w Objective-C istnieją pewne ograniczenia, w większości sytuacji deweloperzy ich unikają).

  • Ostatnio Xamarin dodał obsługę asynchronicznego / oczekującego, co sprawia, że pisanie kodu asynchronicznego jest bardzo proste.

  • Będziesz mógł ponownie wykorzystać część bazy kodu na iOS, Androidzie i Windows Phone.

  • MonoTouch w dużej mierze implementuje API CocoaTouch w bardzo prosty sposób. Na przykład: jeśli masz doświadczenie z CocoaTouch, będziesz wiedział, gdzie znaleźć klasy do sterowania w MonoTouch (MonoTouch.UIKit zawiera klasy dla UIButton, UIView, UINavigationController, itp..., podobnie MonoTouch.Fundacja ma zajęcia dla NSString, NSData, itp...).

  • Xamarin zapewnia użytkownikom natywne wrażenia, w przeciwieństwie do rozwiązań takich jak PhoneGap lub Titanium.

Objective - C ma kilka zalet w stosunku do C#, ale w większości sytuacji pisanie aplikacji w C# zazwyczaj skutkuje krótszym czasem tworzenia i czystszym kodem oraz mniejszą pracą nad portowaniem tej samej aplikacji na inne platformy. Jednym z godnych uwagi WYJĄTKÓW mogą być Gry o wysokiej wydajności które opierają się na OpenGL.

 1
Author: Wolfgang Schreurs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-06 22:08:57

Koszt Biblioteki MonoTouch jest całkowicie bez znaczenia. Powodem, dla którego nie powinieneś używać Mono dla aplikacji iPhone, jest to, że jest to Kula. Jeśli nie możesz zadawać sobie trudu, aby nauczyć się natywnych narzędzi, to nie mam powodu, aby wierzyć, że twój produkt jest wart pobrania.

Edit: 14/04/2010 aplikacje napisane MonoTouch nie kwalifikują się do iTunes Store. Tak powinno być. Apple widział wiele płytkich portów na Macu, używając wieloplatformowych zestawów narzędzi, takich jak Qt, czy Adobe częściowa re-implementacja systemu 7 toolbox, a długi i krótki to po prostu nie są wystarczająco dobre.

 -35
Author: NSResponder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-13 15:37:34