Questions fréquentes

Je rencontre des problèmes lors de la compilation avec Xcode.

Consultez la section Déboguer les problèmes de compilation.

Comment corriger les erreurs de type "Symbole non défini" lors de la compilation ?

Consultez la section Paramètres de lien obligatoires.

Je rencontre des problèmes pour utiliser j2objc sur la ligne de commande.

Le moyen le plus rapide de créer une ligne de commande pour j2objc consiste à commencer par javac, en spécifiant le chemin de classe (facultatif), le chemin source (facultatif), le répertoire de sortie et la liste des fichiers sources. Une fois la compilation effectuée, remplacez "j2objc" par "javac", puis ajoutez tous les indicateurs spécifiques à j2objc. La raison pour laquelle j2objc fonctionne est que j2objc utilise un compilateur Java en tant qu'interface, et utilise donc les mêmes arguments que le compilateur. N'oubliez pas: s'il n'est pas compilé, vous ne pouvez pas le traduire.

Comment la récupération de mémoire est-elle gérée ?

Consultez Gestion de la mémoire. Nous continuons à affiner le code généré pour améliorer la gestion de la mémoire, à l'aide des outils de détection de fuites et de profilage de Xcode. Nous encourageons les projets utilisant J2ObjC à surveiller également les performances et la détection des fuites (comme tous les projets iOS), et à signaler les problèmes détectés.

Comment réduire la taille du code traduit ? Qu'est-ce qui peut accélérer la traduction ?

Voir Élimination du code mort.

Comment j2objc gère-t-il les importations à l'intérieur des fichiers .java ?

j2objc utilise le compilateur javac comme interface, de sorte que toutes les importations sont lues comme n'importe quel compilateur Java. Pour spécifier où trouver les classes importées, utilisez les mêmes options -classpath et -sourcepath que celles utilisées avec javac. Lorsque vous générez des fichiers Objectif-C, des références de classe externes sont collectées, et des directives #import sont ajoutées aux fichiers d'en-tête (.h) ou d'implémentation (.m) générés, le cas échéant.

Pourquoi certaines valeurs minimales et maximales pour les types numériques sont-elles différentes de la spécification Java ?

Ces valeurs sont différentes de celles renvoyées par Java, car elles ne sont pas acceptées par le compilateur Objectif-C. Nous utilisons plutôt les valeurs minimale et maximale définies dans /usr/include/values.h.