2010-04-13 10 views
7

Teraz, gdy monotouch jest zbanowany, zastanawiałem się, czy istnieje sposób na przetłumaczenie C# (lub jakiegoś innego języka) na Objective-C? Nie będę miał nic przeciwko korzystaniu z API Apple'a, o ile nie będę musiał deklarować zmiennych w 3-4 etapach (ivar-property-synthesize-dealloc). Wszystko, czego chcę, to mniej rozwlekły język, skoncentrować się na mojej intencji, a nie na składni kompilatora.Skompiluj C# do celu-C

+1

Apple zbanował programy inne niż ObjC, aby zabić Flash. MonoTouch jest uszkodzeniem ubocznym; Poza tym ludzie z Novella powiedzieli, że będą pracować z Apple, aby sprawdzić, czy mogą pozostać legalnymi. – zneak

+2

Zgadzam się. MonoTouch jest w 100% uziemionym opakowaniem wokół CocoaTouch, którego jedynym celem jest mniejsze ssanie kakao. Eksponuje cały pakiet SDK CocoaTouch za pomocą swojego języka, więc aplikacje utworzone za jego pomocą będą wyglądać tak samo jak te napisane w ObjC. Nie wyodrębnia on trzech szalenie różnych struktur, takich jak QT (Cocoa, Win32, KDE/GNOME/cokolwiek). To raczej niefortunne, że może odejść. –

+0

Jeśli budujesz na urządzenie iPhone'a, nie musisz w rzeczywistości tworzyć ivar dla właściwości. Środowisko wykonawcze stworzy dla ciebie ivar. Jeśli budujesz dla symulatora, będziesz musiał stworzyć ivar. Do kitu. Proszę złożyć bilet i sprawić, aby symulator ssał mniej! – Giao

Odpowiedz

7

Powinieneś zatrzymać się, aby zobaczyć, co się dzieje, zamiast zakładać, że Monotouch jest zbanowany.

Lub naucz się Objective-C. Dobrze jest, aby umysł i tak nauczył się nowego języka. Ramy będą dla ciebie bardziej sensowne.

5

Zawsze można zdefiniować własny język meta dla obiektów, wpisać zamierzone znaczenie, przeanalizować plik i wkleić nowo wyprodukowany kod do XCode.

A jeśli naprawdę jesteś martwy w walce z ObjC i XCode, Apple dało ci ultimatum: użyj go lub odejdź.

+1

Niestety, myślę, że to jest właściwa odpowiedź, Apple narysował linię na piasku. –

+0

tak, muszę go użyć. Wiem, to biznes, nic osobistego. Chcę tylko zobaczyć, czy mogę zminimalizować moje cierpienie;) meta dane i wklej to podejrzane podejście, myślałem o pisaniu w C#, potem kompilator konwertował je do jakiegoś "pośredniego" języka (C lub ObjC), a następnie pozwól xcode skompilować go w tle ... –

+0

To jest dokładnie to, co przepisuję (jeśli nie chcesz ręcznie rzucać Celu-C). Napisz mały kompilator, aby przekonwertować z wybranego formatu na Objective-C. Następnie po prostu skopiuj/wklej to do XCode - nie widzę, jak to jest mniej hacky, niż to, co polecasz. –

4

Jeśli okaże się, że sugerują to ludzie, odpowiedź na twoje pytanie w rzeczywistości nie rozwiąże problemu.

Umowa SDK w szczególny sposób wspomina o "oryginalności" Celu C (i innych języków). Tłumaczenie z C# na Objective-C narusza ten wymóg, aby aplikacje były oryginalnie napisane w Objective-C.

Po drugie, Monotouch obsługuje już pełną kompilację AOT.

2

Tłumaczenie będzie niezgodne z zasadami Apple, ponieważ Twój kod musi być oryginalnie zakodowany w C, Obj -C, C++.

Pochodzące z pierwotnej nauki Java naprawdę nie jest takie trudne. Czy deklaracja zmiennych w wielu miejscach naprawdę jest twoim głównym zarzutem? Jest to łatwe do zrobienia i zapewnia ci ścisłą kontrolę nad twoim programem. Podejrzewa się również, że iPhone OS 4 potrzebuje natywnego kodu, aby móc wykonywać wiele zadań jednocześnie. Ma to również sens, gdyby chcieli powstrzymać Adobe, gdyby nie chcieli zmienić obecnej umowy licencyjnej.

+0

monotouch tworzy "kod natywny" i może być przyjazny dla wielu zadań, po prostu musi przestrzegać reguł. Zrobiłem ObjectiveC i mam 7-8 aplikacji w appstore, napisałem je wszystkie w C# (szczerze mówiąc w autobusie jadącym do biura i wracającym do domu), więc C# jest dla mnie o wiele łatwiejszy. to, co nie ma dla mnie sensu, to podejście Apple'a do mojej drogi lub autostrady. gdyby mieli zestaw reguł, których aplikacja musi przestrzegać, aby było do zaakceptowania, to było w porządku, ale z jakim językiem piszę, moja aplikacja jest trochę za dużo. Ponownie, rozumiem, to jest ich platforma i mogą robić, co im się podoba. –

+0

Jeśli monotouch robi wszystko absolutnie poprawnie, to co Apple wiedziałoby, jakiego języka użyłeś, nie przesyłasz do niego kodu źródłowego (chyba że to się zmieniło). Jedynym powodem, dla którego mogliby wiedzieć, jest to, że system operacyjny nie może właściwie go kontrolować i generuje błędy. W takim przypadku Monotouch nie skompiluje go prawidłowo, co może mieć wpływ na użytkownika. A jeśli martwisz się złamaniem umowy za pomocą monotouch, to i tak zrobisz, próbując tłumaczyć na Obj-C, więc nie powinno to być problemem. – Rudiger

+0

@Rudiger: monotouch robi wszystko absolutnie poprawnie, binarny, który generuje, ma jednak pewne "markery" i "sygnatury", które sprawiają, że Apple jest oczywiste, że binaria kompiluje się z monotouch. jest wiele aplikacji na appstore napisanych w obiektywie c, które są świetne i jest wiele takich bzdur. wiele z nich się zawiesza, wielu nie. wiele wycieków pamięci, wielu nie. co czyni aplikację świetną nie jest narzędziem, to programista. dzięki zakazowi niektórych narzędzi nikt nie osiąga lepszej jakości. –