Häufig gestellte Fragen (FAQs)

Ich habe Probleme beim Erstellen mit Xcode.

Weitere Informationen finden Sie unter Build-Probleme beheben.

Wie behebe ich Fehler mit nicht definierten Symbolen beim Erstellen?

Weitere Informationen finden Sie unter Erforderliche Verknüpfungseinstellungen.

Ich habe Probleme mit j2objc in der Befehlszeile.

Am schnellsten erstellen Sie eine j2objc-Befehlszeile, indem Sie mit javac beginnen und dabei den Klassenpfad (optional), den Quellpfad (optional), das Ausgabeverzeichnis und die Liste der Quelldateien angeben. Nachdem die Kompilierung abgeschlossen ist, ersetzen Sie „j2objc“ durch „javac“ und fügen Sie alle j2objc-spezifischen Flags hinzu. Der Grund dafür ist, dass j2objc einen Java-Compiler als Front-End verwendet und somit dieselben Argumente wie der Compiler verwendet. Denke daran: Wenn es nicht kompiliert wird, kann es auch nicht übersetzt werden.

Wie wird die automatische Speicherbereinigung gehandhabt?

Siehe Arbeitsspeicherverwaltung. Wir optimieren generierten Code mithilfe der Tools zur Leckerkennung und Profilerstellung von Xcode weiter, um die Speicherverwaltung zu verbessern. Wir empfehlen Projekte, die J2ObjC verwenden, um auch die Leistung und die Leckerkennung zu überwachen (wie alle iOS-Projekte sollten) und alle gefundenen Probleme zu melden.

Wie kann die Größe des übersetzten Codes reduziert werden? Was kann die Übersetzung beschleunigen?

Siehe Beseitigung von Dead Code.

Wie verarbeitet j2objc Importe innerhalb von Java-Dateien?

j2objc verwendet den Javac-Compiler als Front-End, sodass alle Importe wie jeder Java-Compiler gelesen werden. Um anzugeben, wo importierte Klassen zu finden sind, verwenden Sie dieselben Optionen für -classpath und -sourcepath wie bei javac. Beim Generieren von Objective-C-Dateien werden externe Klassenverweise erfasst und den generierten Header- (.h)- oder Implementierungsdateien (.m) werden #import-Anweisungen hinzugefügt.

Warum unterscheiden sich einige der Mindest- und Höchstwerte für numerische Typen von der Java-Spezifikation?

Diese Werte unterscheiden sich von den Werten, die Java zurückgibt, da sie außerhalb des Werts liegen, den der Objective-C-Compiler als gültig akzeptiert. Wir verwenden stattdessen die in /usr/include/values.h definierten Mindest- und Höchstwerte.