2010-04-13 15 views
7

Nun, da Monotouch verboten ist, habe ich mich gefragt, ob es eine Möglichkeit gibt, C# (oder eine andere Sprache) in Objective-C zu übersetzen? Es macht mir nichts aus, Apples API zu benutzen, solange ich meine Variablen nicht in 3-4 Stufen deklarieren muss (ivar-property-synthesize-dealloc). Alles, was ich will, ist eine weniger wortreiche Sprache, um mich auf meine Absicht und nicht auf die Compilersyntax zu konzentrieren.Kompiliere C# in objective-C

+1

Apple verbot Nicht-ObjC-Programme, um Flash zu töten. MonoTouch ist Kollateralschaden; Außerdem sagten die Leute von Novell, sie würden mit Apple zusammenarbeiten, um zu sehen, ob sie legal bleiben könnten. – zneak

+2

Ich stimme zu. MonoTouch ist ein 100% -iger, grundlegender Wrapper um CocoaTouch, dessen einziger Zweck es ist, Kakao weniger saugen zu lassen. Alle CocoaTouch SDKs werden in ihrer Sprache angezeigt, sodass die mit ihr erstellten Apps genauso aussehen und sich so anfühlen, wie sie in ObjC geschrieben wurden. Es abstrahiert nicht drei sehr unterschiedliche Frameworks wie QT (Cocoa, Win32, KDE/GNOME/was auch immer). Es ist eher bedauerlich, dass es weggehen könnte. –

+0

Wenn Sie ein iPhone-Gerät erstellen, müssen Sie für eine Eigenschaft keinen Ivar erstellen. Die Laufzeitumgebung erstellt einen Ivar für Sie. Wenn Sie für den Simulator bauen, müssen Sie einen Ivar erstellen. Saugt. Bitte reichen Sie ein Ticket ein und lassen Sie den Simulator weniger saugen! – Giao

Antwort

7

Sie sollten anhalten, um zu sehen, was tatsächlich passiert, anstatt anzunehmen, dass Monotouch verboten ist.

Oder lernen Sie Objective-C. Es ist gut für den Geist, trotzdem eine neue Sprache zu lernen. Und die Rahmenbedingungen werden Ihnen mehr Sinn machen.

5

Sie könnten immer Ihre eigene Metasprache für Objekte definieren, Ihre beabsichtigte Bedeutung schreiben, diese Datei analysieren und den neu hergestellten Code in XCode einfügen.

Und wenn Sie gegen ObjC und XCode wirklich tot sind, hat Apple Ihnen Ihr Ultimatum gegeben: benutzen Sie es oder gehen Sie.

+1

Leider denke ich, das ist die richtige Antwort, Apple hat die Linie in den Sand gezogen. –

+0

ja, ich muss es benutzen. Ich weiß, es ist Geschäft, nichts Persönliches. Ich möchte nur sehen, ob ich mein Leiden minimieren kann;) die Metadaten und einfügen ist ein hacky Ansatz, ich dachte über das Schreiben in C#, dann der Compiler Umwandlung in einige "intermediate" Sprache (C oder ObjC) und dann lass xcode es im Hintergrund kompilieren ... –

+0

Das ist genau das, was ich vorschreibe (wenn Sie sich weigern, Objective-C von Hand zu rollen). Schreiben Sie einen kleinen Compiler, um aus dem Format Ihrer Wahl in Objective-C zu konvertieren. Dann kopiere es einfach in den XCode - ich sehe nicht, wie das weniger hacky ist, als was du empfiehlst. –

4

Wenn es sich herausstellt, wie die Leute es vorschlagen, wird die Antwort auf Ihre Frage nicht Ihr Problem lösen.

In der SDK-Vereinbarung wird besonders auf die "Originalität" des Objective-C (und anderer Sprachen) hingewiesen. Das Übersetzen von C# nach Objective-C verletzt diese Anforderung, dass Anwendungen ursprünglich in Objective-C geschrieben werden.

Zweitens unterstützt Monotouch bereits die vollständige AOT-Kompilierung.

2

Das Übersetzen würde gegen die Richtlinien von Apple sein, da Ihr Code ursprünglich in C, Obj -C, C++ codiert sein muss.

Kommen aus ursprünglich lernen Java ist es wirklich nicht so schwer. Ist die Deklaration von Variablen an mehreren Stellen wirklich Ihr Haupteinwand? Es ist einfach zu bedienen und gibt Ihnen die Kontrolle über Ihr Programm. Es wird auch vermutet, dass das iPhone OS 4 systemeigenen Code benötigt, um richtig multitaskingfähig zu sein. Es macht auch Sinn, ansonsten würden sie die aktuelle Lizenzvereinbarung ändern, wenn sie Adobe stoppen wollten.

+0

monotouch produziert "nativen Code" und kann Multi-Task "freundlich" sein, muss nur Regeln folgen. Ich habe Objective gemacht und habe 7-8 Apps im Appstore, ich habe sie alle in C# umgeschrieben (um ehrlich zu sein im Bus ins Büro zu kommen und nach Hause zu gehen), also ist C# viel einfacher für mich. Was für mich keinen Sinn ergibt, ist Apples Annäherung an meinen Weg oder die Autobahn. Wenn sie eine Reihe von Regeln haben, die Ihre App akzeptieren muss, um akzeptabel zu sein, war das in Ordnung, aber mit welcher Sprache ich schreibe, ist meine App ein bisschen zu viel. wieder, ich verstehe, es ist ihre Plattform und sie können tun, was sie wollen. –

+0

Wenn Monotouch alles absolut richtig macht, was würde Apple wissen, welche Sprache Sie verwendet haben, senden Sie Ihren Quellcode nicht an sie (es sei denn, das hat sich geändert). Der einzige Grund, warum sie wissen würden, ist, ob das Betriebssystem es nicht richtig kontrollieren kann und Fehler erzeugt. In diesem Fall würde Monotouch nicht korrekt kompiliert werden und dies würde den Benutzer beeinträchtigen. Und wenn Sie sich Sorgen machen, die Vereinbarung zu brechen, indem Sie monotouch verwenden, werden Sie es sowieso tun, indem Sie versuchen, in Obj-C zu übersetzen, damit das nicht das Problem sein sollte. – Rudiger

+0

@Rudiger: Monotouch macht alles absolut korrekt, die Binärdatei, die es erzeugt, hat jedoch einige "Marker" und "Signaturen", die Apple klar machen, dass die Binärdatei mit Monotouch kompiliert wird. es gibt viele apps auf dem appstore, die in objective c geschrieben sind, die großartig sind und es gibt jede Menge beschissene. viele von ihnen stürzen ab, viele nicht. viele Leckspeicher, viele nicht. Was eine App großartig macht, ist nicht das Werkzeug, ist der Entwickler. Durch das Verbot bestimmter Werkzeuge erreicht niemand eine bessere Qualität. –

Verwandte Themen